UVA784--dfs

来源:互联网 发布:c语言入门经典第六版 编辑:程序博客网 时间:2024/06/17 15:48

题意:

题目故意扯了很长,其实总结起来就一句话,能跟符号‘*’接触到的空白区域全部转换成‘#’,包括‘*’本身,“#”是墙不能跨过去。

#include<iostream>#include<cstring>using namespace std;char maze[40][90];int dy[]={0,0,-1,1};int dx[]={1,-1,0,0}; void dfs(int y,int x){if(maze[y][x]=='X') return;for(int i=0;i<4;i++){int ny=y+dy[i];int nx=x+dx[i];if(maze[ny][nx]==' ') {maze[ny][nx]='#';dfs(ny,nx);}}}int main(){int t;cin>>t;getchar();while(t--){int i=0;memset(maze,' ',sizeof(maze));while(1){gets(maze[i]);if(maze[i][0]=='_')break; i++;}for(int j=0;j<i;j++){int k=0;while(maze[j][k++]!='\0'){if(maze[j][k]=='*') {maze[j][k]='#';dfs(j,k);}}}int jj=0;while(jj<=i)puts(maze[jj++]);  }return 0; } 


原创粉丝点击