题意:给出一个矩形,N,E,S,W分别代表进行移动的方向,如果走出矩形网格则输出经过的网格数,如果在矩形网格内循环,则输出没进入循环之前所走过的网格数和循环所经过的网格数;

思路:创建两个数组,一个字符数组存每个网格中所要进行的操作,另一个整型数组代表状态,0代表没走过,1代表走过了,然后模拟;

   再提醒一点,建立的字符和整型数组要和题目中建里的一模一样,因为这个我又WA了一发、

   

#include<iostream>
#include<cstring>
using namespace std;
const int qq=15;
int gid[qq][qq];char s[qq][qq];
int main()
{
int n,m,k;
while(cin >> n >> m >> k)
{
cin.get();
if(n==0&&m==0&&k==0) break;
memset(gid,0,sizeof(gid));
for(int i=0;i<=m+1;++i){
gid[0][i]=1;gid[n+1][i]=1;  //外围标记
}
for(int i=0;i<=n+1;++i){        //外围标记
gid[i][0]=1;gid[i][m+1]=1;
}
for(int j,i=1;i<=n;++i){
for(j=1;j<=m;++j)
s[i][j]=cin.get();
cin.get();
}
int x,y;x=k;y=1;int tot=0;
while(!gid[y][x]){              
while(!gid[y][x]&&s[y][x]=='N'){
gid[y][x]=1;y-=1;++tot;
}
while(!gid[y][x]&&s[y][x]=='E'){
gid[y][x]=1;x+=1;++tot;
}
while(!gid[y][x]&&s[y][x]=='S'){
gid[y][x]=1;y+=1;++tot;
}
while(!gid[y][x]&&s[y][x]=='W'){
gid[y][x]=1;x-=1;++tot;
}
}
if(x<1||y<1||x>m||y>n) cout << tot << " step(s) to exit\n";  
else{
int count=0;
while(gid[y][x]){                //计算循环所经过的网格数  此时1,0的意义互换
while(gid[y][x]&&s[y][x]=='N'){
gid[y][x]=0;y-=1;++count;
}
while(gid[y][x]&&s[y][x]=='E'){
gid[y][x]=0;x+=1;++count;
}
while(gid[y][x]&&s[y][x]=='S'){
gid[y][x]=0;y+=1;++count;
}
while(gid[y][x]&&s[y][x]=='W'){
gid[y][x]=0;x-=1;++count;
}
}
cout << tot-count << " step(s) before a loop of " << count << " step(s)\n";
}
}
}

  

最新文章

  1. [转]SQL Server 存储过程 一些常用用法(事物、异常捕捉、循环)
  2. 【图像处理】【SEED-VPM】6.文件目录结构
  3. gdb注意事项
  4. 在某公司时的java开发环境配置文档
  5. qt cef嵌入web
  6. Js获取当前日期时间及其它操作(转)
  7. 【MySql】在Linux下安装MySql数据库
  8. 重构19-Extract&#160;Factory&#160;Class(提取工厂类)
  9. JAVA中REPLACE和REPLACEALL的区别(转)
  10. nginx图片服务器配置
  11. References &amp; the Copy-Constructor
  12. NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别
  13. ASP.NET MVC5学习系列——身份验证、授权
  14. angular中文文档的滚动条样式
  15. js 乘除法小数问题
  16. Spring Boot 揭秘
  17. vue组件之间通信传值
  18. [LeetCode] 182. Duplicate Emails_Easy tag: SQL
  19. STL容器 -- Set
  20. Atitit.ati&#160;dwr的原理and设计&#160;attilax&#160;总结&#160;java&#160;php&#160;版本

热门文章

  1. go struct 抽象
  2. JS函数式编程 - 概念
  3. PHPCMS 按点击量排序
  4. PHPCMS V9双语站建设切换
  5. 并发模式与 RPS 模式之争,性能压测领域的星球大战
  6. GNN 相关资料记录;GCN 与 graph embedding 相关调研;社区发现算法相关;异构信息网络相关;
  7. 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
  8. 信息摘要算法 MessageDigestUtil
  9. Liferay OSGi注解(Annotation) - 使用手册(译文)
  10. python 终端编码