poj1573
来源:互联网 发布:硬盘初始化 数据错误 编辑:程序博客网 时间:2024/05/21 11:29
题目大意:
给一个矩阵的行数和列数,然后给出机器人所在的位置,按照N,S,E,W四个方向走,问最后是走出矩阵还是进入循环。
解题思路:
用个数组记录该位置是否已经走过,然后按照提示走就可以了
代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int r,c,s; int i,j,count,mark,flag; char ch[15][15]; int vis[15][15]; while(scanf("%d%d%d",&r,&c,&s)!=EOF) { flag=0; memset(vis,0,sizeof(vis)); if(r==0&&c==0&&s==0) { break; } for(i=1;i<=r;i++) { getchar(); ch[i][0]='e'; for(j=1;j<=c;j++) { scanf("%c",&ch[i][j]); } ch[i][c+1]='e'; } for(i=0;i<=c+1;i++) { ch[0][i]='e'; } for(i=0;i<=c+1;i++) { ch[r+1][i]='e'; } i=1;j=s; count=1; while(ch[i][j]!='e') { if(ch[i][j]=='W') { vis[i][j]=count; i=i;j=j-1; if(vis[i][j]) { mark=count+1-vis[i][j]; flag=1; break; } else { count++; } } else if(ch[i][j]=='E') { vis[i][j]=count; i=i;j=j+1; if(vis[i][j]) { mark=count+1-vis[i][j]; flag=1; break; } else { count++; } } else if(ch[i][j]=='N') { vis[i][j]=count; i=i-1;j=j; if(vis[i][j]) { mark=count+1-vis[i][j]; flag=1; break; } else { count++; } } else if(ch[i][j]=='S') { vis[i][j]=count; i=i+1;j=j; if(vis[i][j]) { mark=count+1-vis[i][j]; flag=1; break; } else { count++; } } } if(flag) { printf("%d step(s) before a loop of %d step(s)\n",vis[i][j]-1,mark); } else { printf("%d step(s) to exit\n",count-1); } } return 0;}
0 0
- poj1573
- POJ1573
- POJ1573
- poj1573
- poj1573
- POJ1573
- POJ1573
- poj1573
- poj1573
- poj1573
- poj1573
- poj1573
- poj1573
- 纠结的poj1573.。。
- poj1573解题报告
- poj1573(简单的dfs)
- poj1573(模拟bfs)
- POJ1573--模拟--Robot Motion
- Python中的元组和列表的区别
- QT通过JS与HTML的交互
- 【Codeforces 766 C Mahmoud and a Message】 + dp
- USB2.0协议标准描述符
- hadoop基本概念
- poj1573
- 安装VMware ESXi 6.0.0
- Spark系统运行内幕机制循环流程
- keil中文乱码解决和个人习惯字体设置
- 大数据下基于Tensorflow框架的深度学习示例教程
- 动态内存管理
- 上周热点回顾(1.30-2.5)
- Murder in Restaurant
- vbs修改系统时间,增加或减少任意秒数