博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 1035 模拟 水
阅读量:6229 次
发布时间:2019-06-21

本文共 2735 字,大约阅读时间需要 9 分钟。

题目链接:

稍微有点复杂,但是只要模拟出来应该就能过了。

#include 
using namespace std;class node{public: char instruct; int stepId;};const int SIZE = 12;char aLine[SIZE];node map[SIZE][SIZE];void move(int &curRow,int &curCol,char instruct){ switch (instruct) { case 'N': curRow --; break; case 'S': curRow ++; break; case 'W': curCol --; break; case 'E': curCol ++; break; }}//计算从起始点(1,initCol)走到(endRow,endCol)需要走多个步int countStepBeforeExit(int initCol,int endRow,int endCol){ int curRow = 1,curCol = initCol; int stepBeforeExit = 0; while (1) { if (curRow == endRow && curCol == endCol) break; stepBeforeExit ++; move(curRow,curCol,map[curRow][curCol].instruct); } return stepBeforeExit;}//判断(curRow,curCol)是否出界int judgeExit(int curRow,int curCol,int row,int col){ if (curRow < 1 || curRow > row || curCol < 1 || curCol > col) return 1; return 0;}int main (){ int row,col,initCol; while (scanf("%d%d%d",&row,&col,&initCol) != -1) { if (row == 0 && col == 0 && initCol == 0) break; //初始化 for (int i = 0;i < SIZE;i ++) for (int j = 0;j < SIZE;j ++) map[i][j].stepId = 0; for (int i = 1;i <= row;i ++) { scanf("%s",aLine); for (int j = 1;j <= col;j ++) { map[i][j].instruct = aLine[j - 1]; } } int isExit = 1,stepBeforeExit,stepLoop; int preRow,preCol; preRow = preCol = -1; int curRow = 1,curCol = initCol; int stepCount = 0; while (1) { //这一点之前曾走过,说明出现了回路 if (map[curRow][curCol].stepId != 0) { stepLoop = map[preRow][preCol].stepId - map[curRow][curCol].stepId + 1; //计算走到当前点的前一点用了多少个step(s) stepBeforeExit = countStepBeforeExit(initCol,curRow,curCol); //最后没能走出去 isExit = 0; break; } else if (judgeExit(curRow,curCol,row,col)) { isExit = 1; stepBeforeExit = map[preRow][preCol].stepId; break; } stepCount ++; map[curRow][curCol].stepId = stepCount; preRow = curRow , preCol = curCol; //走到下一点 move(curRow,curCol,map[curRow][curCol].instruct); } //能走出去 if (isExit) printf("%d step(s) to exit\n",stepBeforeExit); else printf("%d step(s) before a loop of %d step(s)\n",stepBeforeExit,stepLoop); } return 0;}

转载于:https://www.cnblogs.com/peaceful-andy/archive/2012/08/19/2646757.html

你可能感兴趣的文章
ie兼容性问题 前传
查看>>
如何使用postman传数组数据
查看>>
蓝桥学院2019算法题2.6
查看>>
elasticsearch安装
查看>>
软件工程团队第一次作业
查看>>
饼图tooltip
查看>>
Java第二次作业
查看>>
python configparser
查看>>
motan源码分析五:cluster相关
查看>>
tomcat配置
查看>>
chd校内选拔赛题目+题解
查看>>
Python 字典
查看>>
视觉SLAM中的李群&李代数基础
查看>>
[转]谈谈Linux下动态库查找路径的问题
查看>>
α冲刺 (8/10)
查看>>
Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
Java中1.0 / 0.0 会输出什么?
查看>>
【后缀自动机】
查看>>
前端开发易忘内容收录
查看>>