7 条题解

  • -1
    @ 2026-4-19 2:30:41

    #include #include<math.h> #include<stdio.h> #include #include #include #include<string.h> #include #include #include #include #include #include #include #include using namespace std; const int N=30+10;//1表示开头为1,2表示10的2次方 const int INT=0x3f3f3f3f;//INT+INT int范围内最大INT*INT ,long long; int n,m,sum; int c,d; int dx[]={-1,1,0,0},dy[]={0,0,1,-1}; char a[N][N];

    void dfs(int x,int y){ a[x][y]='#'; for(int i=0;i<=3;i++){ int xx=x+dx[i],yy=y+dy[i]; if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]'.'){ sum++; dfs(xx,yy); } } } int main(){ while (cin>>m>>n){ if(m0&&n0) break; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if (a[i][j]'@'){ c=i; d=j; } } } sum=1; dfs(c,d); cout<<sum<<endl; } } //防盗b //nihaoa | | | | Column | | | | | - | - | - | - | | | | | | | | | | | | | | | | | | | | | - | - | - | - | | | | | | | | | | | | | | | | | | | | | | - | - | - | - | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | - | - | - | - | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

    信息

    ID
    3004
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    565
    已通过
    144
    上传者