|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <bits/stdc++.h>
- using namespace std;
- int arr[105][105];
- int pos[4][2]={1,0,-1,0,0,1,0,-1};
- void dfs(int a,int b)
- {
- if(arr[a][b]==1){
- arr[a][b]==0;
- for(int i=0;i<4;++i){
- int xx=a+pos[i][0];
- int yy=b+pos[i][1];
- dfs(xx,yy);
- }
- }
- }
- int main(void)
- {
- int t,n,m,cnt;
- cin>>t;
- while(t--){
- cnt=0;
- cin>>n>>m;
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- cin>>arr[i][j];
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- if(arr[i][j]==1){
- cnt++;
- dfs(i,j);
- }
- cout<<cnt<<endl;
- }
- }
复制代码
dfs函数里面的arr[a][b]=0改成arr[a][b]==0后,输入第一组测试用例就直接结束了,cout也不输出了,这是为什么呢?
输入:
2
3 4
1 0 0 0
0 0 1 1
1 1 1 0
5 5
1 1 1 1 0
0 0 1 0 1
0 0 0 0 0
1 1 1 0 0
0 0 1 1 1
输出:
2
3
|
|