社区讨论
迷之WA
P1162填涂颜色参与者 4已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @mi6vpvsr
- 此快照首次捕获于
- 2025/11/20 11:36 4 个月前
- 此快照最后确认于
- 2025/11/20 11:36 4 个月前
为什么两个代码一模一样,
可一个能过,
另一个却只能过两个点?
求神犇们解释一下Orz
代码一(AC):
CPP#include <bits/stdc++.h>
using namespace std;
int n;
int mapp[31][31];
int dx[5]={0,-1,1,0,0};
int dy[5]={0,0,0,-1,1};
void bfs(int x,int y)
{
int head=0,tail=1;
int h[901][3];
mapp[x][y]=-1;
h[1][1]=x;
h[1][2]=y;
do
{
head++;
for(int i=1;i<=4;++i)
{
int xx=h[head][1]+dx[i];
int yy=h[head][2]+dy[i];
if(xx<1||xx>n||yy<1||yy>n||abs(mapp[xx][yy])==1) continue;
tail++;
mapp[xx][yy]=-1;
h[tail][1]=xx;
h[tail][2]=yy;
}
}
while(head<tail);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&mapp[i][j]);
for(int i=1;i<=n;++i)
{
if(mapp[i][1]==0) bfs(i,1);
if(mapp[i][n]==0) bfs(i,n);
if(mapp[1][i]==0) bfs(1,i);
if(mapp[n][i]==0) bfs(n,i);
}
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(mapp[i][j]==0) mapp[i][j]=2;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(mapp[i][j]==-1) mapp[i][j]=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
printf("%d ",mapp[i][j]);
printf("\n");
}
return 0;
}
代码二(40分):
CPP#include<bits/stdc++.h>
using namespace std;
int n,mmp[31][31];
int dx[5]={0,-1,1,0,0};
int dy[5]={0,0,0,-1,1};
void bfs(int x,int y)
{
int head=0,tail=1;
int h[901][3];
mmp[x][y]=-1;
h[1][1]=x;
h[1][2]=y;
int xx,yy;
do
{
head++;
for(int i=1;i<=4;++i)
{
xx=h[head][1]+dx[i];
yy=h[head][2]+dy[i];
if(xx<1||xx>n||yy<1||yy>n||abs(mmp[xx][yy])==1) continue;
tail++;
mmp[xx][yy]=-1;
h[tail][1]=xx;
h[tail][2]=yy;
}
}while(head<tail);
}
int main()
{
int n,i,j;
cin>>n;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>mmp[i][j];
for(i=1;i<=n;++i)
{
if(mmp[i][1]==0)bfs(i,1);
if(mmp[i][n]==0)bfs(i,n);
if(mmp[1][i]==0)bfs(1,i);
if(mmp[n][i]==0)bfs(n,i);
}
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(mmp[i][j]==0)mmp[i][j]=2;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(mmp[i][j]==-1)mmp[i][j]=0;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
cout<<mmp[i][j]<<' ';
cout<<endl;
}
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...