求助
查看原帖
求助
313137
qqqqq111楼主2021/5/15 18:50

为什么这样能a:

#include<iostream>
#include<cstdio>
#include<cstring> 
#include<string>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<cctype>
#include<cstdlib>
#include<iomanip>
#include<vector>
#include<stack>
//#include<map>
#include<queue>
#include<list>
using namespace std;
struct node
{
	int x,y;
};
int n,m;
char map[104][104];
int xy[3][10]={{},{0,-1,-1,-1,0,0,1,1,1},{0,-1,0,1,-1,1,-1,0,1}};
int sum;
queue<node> q;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
		scanf("%s",map[i]);
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
		{
			if(map[i][j]=='W')
			{
				q.push((node){i,j});
				while(!q.empty())
				{
					node tmp=q.front();
					q.pop();
					for(int k=1;k<=8;k++)
					{
						int ux=tmp.x+xy[1][k],uy=tmp.y+xy[2][k];
						if(ux<0 || ux>n || uy<0 || uy>m || map[ux][uy]!='W')
							continue;
						q.push((node){ux,uy});
						map[ux][uy]='.';
					}
				}
				sum++;
			}
		}
	printf("%d",sum);
	return 0;
}

而这样就不能:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<cctype>
#include<cstdlib>
#include<stack>
//#include<map>
#include<list>
#include<iomanip>
#include<queue>
using namespace std;
struct node
{
	int x,y;
};
queue<node> q;
int xy[3][10]={{},{0,-1,-1,-1,0,0,1,1,1},{0,-1,0,1,-1,1,-1,0,1}};
int n,m;
string tmp;
int map[120][120];
int ans;
int main()
{
	memset(map,0,sizeof(map));
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>tmp;
		for(int j=0;j<m;j++)
		{
			switch(tmp[j])
			{
				case 'W':
					map[i][j+1]=1;
				default:
					break;
			}
		}
	}
	/*
	for(int i=1;i<=n;i++,cout<<endl)
		for(int j=1;j<=m;j++)
			cout<<map[i][j];
	*/
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(map[i][j]==1)
			{
				q.push((node){i,j});
				while(!q.empty())
				{
					node u=q.front();
					q.pop();
					for(int k=1;k<=8;k++)
					{
						int x=u.x+xy[1][k],y=u.y+xy[2][k];
						if(x<1 || x>=n || y<1 || y>=m || map[x][y]==0)
							continue;
						q.push((node){x,y});
						map[i][j]=0;
					}
				}
				ans++;
			}
	cout<<ans;
	return 0;
}
2021/5/15 18:50
加载中...