UVA 784 - Maze Exploration
水题,了解了dfs后,这样的题就水的很了。
代码如下:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char ch[50][100]; void dfs(int i, int j) { if(ch[i][j] == '#'||ch[i][j]=='X')return; ch[i][j] = '#'; dfs(i-1, j-1);dfs(i-1, j);dfs(i-1, j+1); dfs(i, j-1); dfs(i, j+1); dfs(i+1, j-1);dfs(i+1, j);dfs(i+1, j+1); } int main () { int n, d; cin>>n;cin.ignore(); while(n--) { memset(ch,'X',sizeof(ch)); for(int i = 0;; i++) { gets(ch[i]); if(ch[i][0] == '_') { d = i; break; } } for(int i = 0; i < d; i++) for(int j = 0; ch[i][j]; j++) { if(ch[i][j] == '*') { ch[i][j] = ' '; dfs(i, j); } } for(int i = 0; i <= d; i++,cout<<endl) for(int j = 0; ch[i][j];j++) cout<<ch[i][j]; } return 0; }