URAL 2027 URCAPL, Episode 1 (模拟)
2015-07-29 19:37
405 查看
题意:给你一个HxW的矩阵,每个点是一个指令,根据指令进行一系列操作。
题解:模拟
题解:模拟
#include<cstdio> #include<algorithm> using namespace std; const int maxn = 101; char G[maxn][maxn]; int dx[] = {-1,0,1, 0}; int dy[] = { 0,1,0,-1}; struct pointer { int r,c; int dir; void Move(){ r += dx[dir]; c += dy[dir]; } char read(){ return G[r][c]; } }p; int h,w; const int up_bound = 1e5; const int TimeLim = 1e6; const int MaxN = 1e5+5; int readLim; int readList[MaxN]; void execute() { p.r = p.c = 0; int Register[26] = {0}; int cur = 0; char op = p.read(); p.dir = 1; int step = 1; int ReadTimes = 0; while(op!='#'){ if('A'<=op&&op<='Z'){ swap(Register[op-'A'],cur); }else switch(op){ case '^':{ p.dir = 0; break; } case '>':{ p.dir = 1; break; } case 'v':{ p.dir = 2; break; } case '<':{ p.dir = 3; break; } case '?':{ if(ReadTimes>=readLim){ cur = readList[readLim-1]; }else { cur = readList[ReadTimes]; ReadTimes++; } break; } case '!':{ printf("%d\n",cur); cur = 0; break; } case '+':{ cur++; if(abs(cur)>up_bound){ printf("OVERFLOW ERROR\n"); return; } break; } case '-':{ cur--; if(abs(cur)>up_bound){ printf("OVERFLOW ERROR\n"); return; } break; } case '@':{ if(cur){ p.dir = (p.dir+1)%4; } else { p.dir = (p.dir+3)%4; } break; } } step++; if(step>TimeLim) { printf("TIME LIMIT EXCEEDED\n"); return; } p.Move(); if(p.r<0||p.r>=h||p.c<0||p.c>=w) { printf("RUNTIME ERROR\n"); return; } op = p.read(); } } int main() { scanf("%d%d",&h,&w); for(int i = 0; i < h; i++) scanf("%s",G[i]); scanf("%d",&readLim); for(int i = 0; i < readLim; i++){ scanf("%d",readList+i); } execute(); return 0; }
相关文章推荐
- Linux目录结构及其详解--转载
- java中的并发:同步
- how to use writeUTF & writeUTFBytes
- URAL 1715. Another Ball Killer (大模拟)
- i2c上拉电阻的实例分析
- 谨以此文向oi之路致敬
- 怎样使模块不optimize
- 最近几天的工作
- HDU 2141 Can you find it? 二分查找
- jQuery 2种扩展
- Java学习笔记-----Java操作数据库:可以运行的实例
- JavaScript实现生成验证码
- sqlserver 关于count(1),count(*)测试
- 欢迎使用CSDN-markdown编辑器
- mongodb复制集部署
- ios 面试总结
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题4
- 如何分配变量到指定的地址
- javascript之修改和删除文档