CodevsP1026 逃跑的拉尔夫
来源:互联网 发布:淘宝网健身器材 编辑:程序博客网 时间:2024/05/01 14:35
广搜+判重,不判重会MLE
三维判重,vis[I][j][k]表示在第(I,j)个点处理第k个方向,注意不要错判
#include<iostream>#include<queue>#include<string>#include<utility> #include<cstring>using namespace std;int r,c,n;char G[52][52];pair<int,int>start;const int mx[4]={-1,0,1,0 };const int my[4]={0 ,1,0,-1};queue<pair<int,int> >q;bool vis[52][52][1048];void init(void){cin>>r>>c;for(int i=0;i<r;i++)for(int j=0;j<c;j++){cin>>G[i][j];if(G[i][j]=='*'){start=make_pair(i,j);G[i][j]='.';}}memset(vis,0,sizeof(vis));}void print(void){pair<int,int>p;while(!q.empty()){p=q.front();q.pop();G[p.first][p.second]='*';}for(int i=0;i<r;i++){for(int j=0;j<c;j++){cout<<G[i][j];}cout<<endl;}}inline int check(pair<int,int> t){if(t.first<0||t.first>=r||t.second<0||t.second>=c)return 0;if(G[t.first][t.second]=='X')return 0;return 1;}int BFS(int d){int s=q.size();pair<int,int> now;while(s--){now=q.front();q.pop();while(1){now=make_pair(now.first+mx[d],now.second+my[d]);if(check(now)){if(vis[now.first][now.second][n])continue;q.push(now);vis[now.first][now.second][n]=1;}else break;}}}void solve(void){cin>>n;string temp;int d;q.push(start);while(n--){cin>>temp;if(temp=="NORTH") d=0;else if(temp=="EAST")d=1;else if(temp=="SOUTH")d=2;else if(temp=="WEST")d=3;BFS(d);}print();}int main(){ios::sync_with_stdio(false);init();solve();return 0;}
0 0
- CodevsP1026 逃跑的拉尔夫
- 1026 逃跑的拉尔夫
- BFS 逃跑的拉尔夫
- 1026 逃跑的拉尔夫
- [codevs1026] 逃跑的拉尔夫
- wikioi 逃跑的拉尔夫
- 逃跑的拉尔夫
- Wikioi P1026 逃跑的拉尔夫
- 【wikioi】1026 逃跑的拉尔夫
- wikioi 1026 逃跑的拉尔夫
- 【wikioi】1026逃跑的拉尔夫
- wikioi逃跑的拉尔夫c++
- codevs1026 逃跑的拉尔夫(搜索)
- codevs--1026 逃跑的拉尔夫
- CodeVs 1026 逃跑的拉尔夫
- 【codevs 1026】逃跑的拉尔夫
- Codevs 1026 逃跑的拉尔夫
- Codevs 1026 逃跑的拉尔夫
- WebScarab拦截WebGoat的请求
- 安卓开发——Intent跳转地图应用(百度地图、高德地图)
- linux服务器之间通过ssh-rsa方式登陆验证
- spring与hibernate整合时实体类映射文件找不到的问题
- Docker快速搭建neural style环境
- CodevsP1026 逃跑的拉尔夫
- Linux 有了 “DTrace”
- 数据结构学习之栈-逆波兰表达式(一)
- 网络游戏角色不同步问题
- leetCode练习(102)
- 开发环境Oracle数据库内存消耗过大的解决方案
- C 寻找一个字节的整数中1的个数
- 玛丽卡
- javascript 函数