题目为PDF格式,就不粘贴了。
题意:将*可以移动到的位置标记为#,然后输出。
思路:简单的DFS,没什么了。
AC代码如下:
#include<cstdio>
#include<cstring>
using namespace std;
char s[40][100];
int len[40],num[4][2]={-1,0,0,1,1,0,0,-1};
void dfs(int x,int y)
{ int i,j,k;
if(s[x][y]!=' ')
return;
s[x][y]='#';
for(k=0;k<=3;k++)
dfs(x+num[k][0],y+num[k][1]);
}
int main()
{ int t,n,i,j,k;
scanf("%d",&t);
getchar();
while(t--)
{ n=0;
while(true)
{ gets(s[++n]+1);
len[n]=strlen(s[n]+1);
if(s[n][1]=='_')
break;
}
for(i=1;i<=n;i++)
for(j=1;j<=len[i];j++)
if(s[i][j]=='*')
{ s[i][j]=' ';
dfs(i,j);
}
for(i=1;i<=n;i++)
printf("%s\n",s[i]+1);
}
}