博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 2027 URCAPL, Episode 1 (模拟)
阅读量:6982 次
发布时间:2019-06-27

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

题意:给你一个HxW的矩阵,每个点是一个指令,根据指令进行一系列操作。

题解:模拟

 

#include
#include
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;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4686986.html

你可能感兴趣的文章
linux系统学习第一天
查看>>
eclipse的安卓开发插件『ADT』在线安装不成功的解决方案
查看>>
第12章,网络管理(下)网络基础配置
查看>>
DTU是什么 DTU种类及应用领域分析
查看>>
基于Zynq-7000高速数据采集解决方案
查看>>
【VMware vSAN 6.6】5.2.运行状况:我们有软硬件项目解决方案
查看>>
细数iOS上的那些安全防护
查看>>
tar命令常用参数解释
查看>>
SourceTree跳过Atlassian账号,免登陆,跳过初始设置
查看>>
刷屏的海底捞超级APP究竟是怎样与阿里云合作的
查看>>
redhat linux 访问控制
查看>>
DNS--1--基础概念
查看>>
万能的model数据选择列表
查看>>
FreeCodeCamp:Return Largest Numbers in Arrays
查看>>
C#接口
查看>>
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
查看>>
敏捷开发团队管理系列之一:序言与出发点
查看>>
挂载磁盘出错
查看>>
Git详解之三 Git分支
查看>>
我的友情链接
查看>>