求调
  • 板块题目总版
  • 楼主dengruixun
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/7/20 15:51
  • 上次更新2023/11/3 08:38:30
查看原帖
求调
667679
dengruixun楼主2023/7/20 15:51

P1451

#include<iostream>
#include<string>
using namespace std;
int n,m,ans=0;
char a[105][105];
bool vis[105][105];
int dx[] = {1,1,2,2};
int dy[] = {-2,2,-1,1};
void dfs(int x,int y){
    vis[x][y]=true;
    for(int i = 0;i<=3;i++){
        int nx = x+dx[i];
        int ny = y+dy[i];
        if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&vis[nx][ny]==false&&a[nx][ny]!='0'){
            dfs(nx,ny);
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=m;j++){
            cin>>a[i][j];
            }
        }
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=m;j++){
            if(vis[i][j]==false&&a[i][j]!='0'){
                ans++;
                dfs(i,j);
            }
        }
    }
    cout<<ans;
    return 0;
}

为啥输出6&&&&了呢!!???

2023/7/20 15:51
加载中...