#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
char arr[100][100];
void BFS(int x,int y,int size)
{
queue<int> Q;
Q.push(x);
Q.push(y);
while(!Q.empty())
{
int x=Q.front();
Q.pop();
int y=Q.front();
Q.pop();
if(arr[x+1][y]=='-'&&x+1<size)
{
Q.push(x+1);
Q.push(y);
arr[x+1][y]='+';
}
if(arr[x-1][y]=='-'&&x-1>=0)
{
Q.push(x-1);
Q.push(y);
arr[x-1][y]='+';
}
if(arr[x][y+1]=='-'&&y+1<size)
{
Q.push(x);
Q.push(y+1);
arr[x][y+1]='+';
}
if(arr[x][y-1]=='-'&&y-1>=0)
{
Q.push(x);
Q.push(y-1);
arr[x][y-1]='+';
}
}
return;
}
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
memset(arr,0,sizeof(arr));
for(int i=0;i<a;i++)
scanf("%s",arr[i]);
int x,y;
scanf("%d%d",&x,&y);
BFS(x,y,a);
for(int i=0;i<a;i++)
printf("%s\n",arr[i]);
// printf("\n");
}
return 0;
}
一直WA line1 真的想不到什麼問題
試試看把 if 們的條件式的條件交換,如下:
if(x + 1 < size && arr[x + 1][y] == '-')
{
Q.push(x + 1);
Q.push(y);
arr[x + 1][y] = '+';
}
if(x - 1 >= 0 && arr[x - 1][y] == '-')
{
Q.push(x - 1);
Q.push(y);
arr[x - 1][y] = '+';
}
if(y + 1 < size && arr[x][y + 1] == '-')
{
Q.push(x);
Q.push(y + 1);
arr[x][y + 1] = '+';
}
if(y - 1 >= 0 && arr[x][y - 1] == '-')
{
Q.push(x);
Q.push(y - 1);
arr[x][y - 1] = '+';
}
不行的話,就再上來問問看吧。
以上。