题目链接:https://cn.vjudge.net/problem/HDU-1035

水题

代码

#include <cstdio>
#include <map>
int height, width, sp, dir[4][2]={1, 0, 0, -1, -1, 0, 0, 1};
std::map<char, int> todir;
char map[15][15];
int solve(int x, int y, int step, int vis[][15], int &loop){
if (x<0 || y<0 || x>=width || y>=height) {loop=0; return step;}
if (vis[y][x]) {loop=step-vis[y][x]; return step-loop;} vis[y][x]=step;
return solve(x+dir[todir[map[y][x]]][0], y+dir[todir[map[y][x]]][1], step+1, vis, loop);
} int main(void){
todir['E']=0; todir['N']=1;
todir['W']=2; todir['S']=3;
while (scanf("%d%d", &height, &width)==2 && height){
scanf("%d", &sp);
for (int y=0; y<height; y++) scanf("%s", map[y]); int vis[15][15]={0}, loop, cnt=solve(sp-1, 0, 1, vis, loop);
if (!loop) printf("%d step(s) to exit\n", cnt-1);
else printf("%d step(s) before a loop of %d step(s)\n", cnt-1, loop);
} return 0;
}

最新文章

  1. Android开发--异步加载
  2. [No000077]打造自己的Eclipse
  3. HBase 专题技术收录
  4. MongoDB学习与BUG解答
  5. Android 实现Path2.0中绚丽的的旋转菜单
  6. R之pryr
  7. Python GUI编程实践
  8. python 内置函数和表达式
  9. pod update或者pod install很慢
  10. objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
  11. js中设置setInterval的注意点
  12. CentOS 如何修改mysql 用户root的密码
  13. 基于Redis位图实现系统用户登录统计
  14. 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
  15. nextcloud大文件无法上传
  16. no module named selenium
  17. ResourceBundle类的方式来读取config.properties配置文件参数值
  18. Ubantu 查看系统资源占用
  19. Mac 10.12安装FTP工具FileZilla
  20. 探究rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制

热门文章

  1. 采集电脑摄像头和mic,rtp端口推送音视频工具
  2. Ubuntu下使用Deepin-wine的移植版安装qq微信等
  3. vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式
  4. express+模板引擎构建项目时遇到的几个小问题
  5. Spark 运行机制及原理分析
  6. Glide中的回调:targets
  7. 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)
  8. PHP读xml、写xml(DOM方法)
  9. Microsoft Visual Studio 2015打开TFS大量报错问题解决方案
  10. c++ 子类构造函数初始化及父类构造初始化