poj 1573 Robot Motion 暑假训练第9题 模拟 大水题
2015-07-19 18:02
357 查看
这道题以前做过。。所以打的时候很顺利,不到20分钟就打完了,3月份的代码有2600多B,现在只有1200多
代码:
代码:
#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<map> using namespace std; map<char ,int> s; int n,m,k,kk; int kan=1; int p,q,x,y; char a[12][12]; int visit[12][12]={-1}; int dir[4][2]={-1,0,0,1,1,0,0,-1}; void check(int x,int y) { if(x<0||x>=n||y<0||y>=m) { kan=0; } else if(visit[x][y]!=-1) { kk=visit[x][y]; kan=2; } } void tell() { int ll; x=0; y=k-1; while(kan) { ll=s[a[x][y]]; p=dir[ll][0]+x; q=dir[ll][1]+y; check(p,q); if(kan==0) { cout<<visit[x][y]+1<<" step(s) to exit"<<endl; break; } if(kan==2) { cout<<kk<<" step(s) before a loop of "<<visit[x][y]+1-kk<<" step(s)"<<endl; break; } visit[p][q]=visit[x][y]+1; x=p; y=q; } } int main() { s['N']=0;s['E']=1,s['S']=2,s['W']=3; while(cin>>n>>m>>k) { kan=1; if(n==m&&m==k&&k==0) break; memset(visit,-1,sizeof(visit)); int i,j,t; for(i=0;i<n;i++) { for(j=0;j<m;j++) { cin>>a[i][j]; } } visit[0][k-1]=0; tell(); } return 0; }
相关文章推荐
- MVC之Ajax.BeginForm使用详解之更新列表
- IOS取消performSelector警告
- 华为OJ:线性插值
- Android 中使用Lambda表达式
- Base64编码
- 程序结构与进程结构
- Intel INDE(集成原生开发人员体验)的Windows开发指导
- 第二节
- applicationContext.xml 配置文件的存放位置
- 股票学习28(汽车行业补充)
- nginx使用介绍 说明
- 《学习OpenCV》第四章课后题3-b
- AffineTransform入门
- Linux -gdb如何显示宏定义的值
- COJ 2024 仙境传奇(五)——一个天才的觉醒 素数筛
- java事件处理机制(自定义事件)
- 【thinkphp3.2.x】thinkphp3.2.x中有关redis缓存相关的文件
- hosts 的设置将域名与iP在本地绑定
- IOS艺术字及简单的图文混排
- 贪心 Codeforces Round #135 (Div. 2) C. Color Stripe