求求求求求助!!
查看原帖
求求求求求助!!
475578
zttttttttttj楼主2021/4/8 21:37
#include<bits/stdc++.h>
using namespace std;
int a[1000][1000];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int ans=0,n,m;
void doit(int p,int q)
{
     
     int x,y,t,w,i;
	 int h[1000][3];
     ans++;a[p][q]=0;
     t=0;w=1;  
	 h[1][1]=p;
     h[1][2]=q;
     
     do
	  {
          t++;
          for(int i=0;i<=3;i++)
           {
           	 x=h[t][1]+dx[i];
           	 y=h[t][2]+dy[i];
           	 if((x>=0)&&(x<m)&&(y>=0)&&(y<n)&&(a[x][y]))
           	 {
           	 	w++;
           	 	h[w][1]=x;
           	 	h[w][2]=y;
           	 	a[x][y]=0;
			 }
		   }
	  }while(t<w);
}
int main()
{
	char s[100],ch;
	cin>>m>>n;

	for(int i=0;i<=m-1;i++)
	 for(int j=0;j<=n-1;j++)
	  a[i][j]=1;
	for(int i=0;i<=m-1;i++)
	{
		gets(s);
		for(int j=0;j<=n-1;j++)
		if(s[j]=='0') a[i][j]=0; 
	}
	for(int i=0;i<=m-1;i++)
	 for(int j=0;j<=n-1;j++)
	  if(a[i][j]) doit(i,j);
	cout<<ans;
	return 0;
}

请问是哪里错了,样例怎么老是输出 3?

啊啊啊啊啊一个小破题弄了半天

2021/4/8 21:37
加载中...