[codevs1026] 逃跑的拉尔夫
2016-11-16 17:52
351 查看
题目链接
题解:闷声大暴力啊啊啊啊
题解:闷声大暴力啊啊啊啊
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=55; int r,c,sx,sy,n; char s[maxn][maxn],ans[maxn][maxn]; int map[maxn][maxn],vis[maxn][maxn][maxn*200],d[maxn*200];; int dx[]={0,-1,1,0,0}; int dy[]={0,0,0,-1,1}; void dfs(int x,int y,int t) { if(vis[x][y][t]) return ;//判重 vis[x][y][t]=1; if(!map[x][y]||x>r||y>c||x<1||y<1) return; if(t>n){ ans[x][y]='*';//找到一个可行点 return; } while(map[x][y])//一个指令可以走任意格,所以要用while { if(x>r||y>c||x<1||y<1) return; if(d[t]==1) dfs(--x,y,t+1); if(d[t]==2) dfs(++x,y,t+1); if(d[t]==3) dfs(x,--y,t+1); if(d[t]==4) dfs(x,++y,t+1); } } int main() { cin>>r>>c; for(int i=1;i<=r;i++) {char ch; for(int j=1;j<=c;j++) { cin>>ch; if(ch=='.'){map[i][j]=1;ans[i][j]='.';} if(ch=='X'){map[i][j]=0;ans[i][j]='X';} if(ch=='*'){ map[i][j]=1;ans[i][j]='.'; sx=i;sy=j; } } } cin>>n; for(int i=1;i<=n;i++){ string dire; cin>>dire; if(dire[0]=='N') d[i]=1; if(dire[0]=='S') d[i]=2; if(dire[0]=='W') d[i]=3; if(dire[0]=='E') d[i]=4; } dfs(sx,sy,1); for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) cout<<ans[i][j]; cout<<endl; } }
相关文章推荐
- CODE[VS] 1026 逃跑的拉尔夫
- codevs 1026 逃跑的拉尔夫 x
- CODE[VS] 1026 逃跑的拉尔夫(模拟)
- codevs--1026 逃跑的拉尔夫
- codevs 1026 逃跑的拉尔夫
- CODE[VS]1026 逃跑的拉尔夫
- codevs 1026 逃跑的拉尔夫 BFS
- codevs1026 逃跑的拉尔夫
- codevs 1026_逃跑的拉尔夫_bfs
- codevs 1026 逃跑的拉尔夫 模拟
- code[vs]1026 逃跑的拉尔夫(bfs+判重)
- codevs1026 逃跑的拉尔夫(搜索)
- codevs 1026 逃跑的拉尔夫(BFS)
- Codevs1026 SEARCH(逃跑的拉尔夫 )(BFS)
- Codevs 1026 逃跑的拉尔夫
- 宽度优先搜索 之 CODE[VS] 1026 逃跑的拉尔夫
- 【codevs1026】逃跑的拉尔夫,广搜的胜利
- CODE[VS] 1026 逃跑的拉尔夫
- (昨天的)codevs天梯 逃跑的拉尔夫 dfs
- AC日记——逃跑的拉尔夫 codevs 1026 (搜索)