UVA-227 Puzzle(模拟)
题目:
题意:
给出一个5*5的方格,里边有一个格子是空的,现在给出一串指令,A->空格向上移动,B->空格向下移动,R->空格向右移动,L->空格向左移动。
输出移动后的结果。
思路:
直接上模拟就好了,不过就是输入处理有点恶心,最好用scanf和printf来处理输入输出。
1、空格移动出界和出现不是‘A’、‘B’、‘R’、‘L’中的指令,这两种情况都算是“This puzzle has no final configuration.”。
2、另外在处理指令的时候,遇到1中的情况只要标记一下就好了,最终统一在‘0’的位置退出循环。(WA到怀疑人生)
例如这个样例:
AAAAA
BBBBB
NNNNN
JJJJJ
UUUU
AQ
0
Z
3、输出两两之间用一个空行隔开。
代码:
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define FRE() freopen("in.txt","r",stdin)
using namespace std;
typedef long long ll;
const int maxn = 5e3+;
int mp[][]; void toSwap(int& a,int& b){
int t = a;
a = b,b = t;
} bool Move(char op, int& r,int& c) {
if(op=='A') {
if(r- == )
return false;
toSwap(mp[r][c],mp[r-][c]);
r--;
return true;
} else if(op=='B') {
if(r+ == )
return false;
toSwap(mp[r][c],mp[r+][c]);
r++;
return true;
} else if(op == 'R') {
if(c+ == )
return false;
toSwap(mp[r][c],mp[r][c+]);
c++;
return true;
} else if(op == 'L'){
if(c- == )
return false;
toSwap(mp[r][c],mp[r][c-]);
c--;
return true;
}
return false;
} void check() {
for(int i = ; i<=; i++) {
for(int j = ; j<=; j++) {
if(j!=)
printf(" ");
printf("%c",mp[i][j]+'A');
}
printf("\n");
}
} int main() {
//FRE();
char str[];
int cnt = ;
while() {
int len;
for(int i = ; i<=; i++) {
gets(str);
len = strlen(str);
if(i == && len == && str[] == 'Z'){
return ;
}
for(int j = ; j<len; j++) {
mp[i][j+] = str[j]-'A';
}
if(len == ){
mp[i][] = -;
}
}
int r,c;
for(int i = ; i<=; i++) {
for(int j = ; j<=; j++) {
if(mp[i][j] < ) {
r = i;
c = j;
}
}
}
//check();
char op[];
bool ok = true;
while() {
bool isend = false;
gets(op);
//cout<<op<<" GG "<<endl;
len = strlen(op);
for(int i = ; i<len; i++) {
//cout<<op[i]<<endl;
if(op[i] == '') {
isend = true;
}
else if(!Move(op[i],r,c)){
ok = false;
}
}
if(isend) {
break;
}
}
//cout<<"HH"<<endl;
if(cnt != ){
printf("\n");
}
if(!ok){
printf("Puzzle #%d:\n",++cnt);
printf("This puzzle has no final configuration.\n");
}else {
printf("Puzzle #%d:\n",++cnt);
check();
}
}
return ;
}
/*
PutIn:
TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL0
ABCDE
FGHIJ
KLMNO
PQRS
TUVWX
AAA
LLLL0
ABCDE
FGHIJ
KLMNO
PQRS
TUVWX
AAAAABBRRRLL0
Z
PutOut:
Puzzle #1:
T R G S J
X O K L I
M D V B N
W P A E
U Q H C F
Puzzle #2:
A B C D
F G H I E
K L M N J
P Q R S O
T U V W X
Puzzle #3:
This puzzle has no final configuration.
*/
UVA-227 Puzzle(模拟)的更多相关文章
- UVA 227 Puzzle(基础字符串处理)
题目链接: https://cn.vjudge.net/problem/UVA-227 /* 问题 输入一个5*5的方格,其中有一些字母填充,还有一个空白位置,输入一连串 的指令,如果指令合法,能够得 ...
- uva 227 Puzzle
Puzzle A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained ...
- UVA 227 Puzzle - 输入输出
题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...
- uva 227 Puzzle (UVA - 227)
感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...
- Puzzle UVA - 227 PE代码求大佬指点
A children's puzzle that was popular 30 years ago consisted of a 5×5 frame which contained 24 smal ...
- UVA 246 - 10-20-30 (模拟+STL)
UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20 ...
- ZOJ 2610 Puzzle 模拟
大模拟:枚举6个方向.检查每一个0是否能移动 Puzzle Time Limit: 2 Seconds Memory Limit: 65536 KB Little Georgie likes ...
- UVa 11988 (数组模拟链表) Broken Keyboard (a.k.a. Beiju Text)
题意: 模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键. 问最终屏幕上显示的结果是什么字符串. 分析: 如果在数组用大量的移动字符必然很耗时. ...
- UVA 277 Puzzle
题意:输入5x5的字符串,输入操作,要求输出完成操作后的字符串. 注意:①输入的操作执行可能会越界,如果越界则按题目要求输出不能完成的语句. ②除了最后一次的输出外,其他输出均要在后面空一行. ③操作 ...
- UVa 1611 (排序 模拟) Crane
假设数字1~i-1已经全部归位,则第i到第n个数为无序区间. 如果i在无序区间的前半段,那么直接将i换到第i个位置上. 否则先将i换到无序区间的前半段,再将i归位.这样每个数最多操作两次即可归位. # ...
随机推荐
- kendo datepicker汉化
kendo grid 支持多语言,包括的语言有非常多种.一般默认情况是使用en,可是对于国内市场的话我们须要使用汉字.不墨迹了. <link href="http://cdn. ...
- H264--3--NAL层的处理[6]
------------------------------H.264的NAL层处理 ------------------------------ H264以NALU(NAL unit)为单位来支持编 ...
- Linux微信web开发者工具
Linux微信web开发者工具 https://github.com/cytle/wechat_web_devtools Linux微信web开发者工具, 可在 linux 桌面环境跑起 微信开发者工 ...
- Python 常用算法记录
一.递归 汉诺塔算法:把A柱的盘子,移动到C柱上,最少需要移动几次,大盘子只能在小盘子下面 1.当盘子的个数为n时,移动的次数应等于2^n – 1 2.描述盘子从A到C: (1)如果A只有一个圆盘,可 ...
- .NET Runtime version 2.0.50727.8762 - 执行引擎错误(7969097A) (80131506)
VS2010调试IIS发布的web工程提示:无法连接到 Visual Studio 开发服务器 .NET Runtime version 2.0.50727.8762 - 执行引擎错误(7969097 ...
- java运行jdk连接mysql出现了:Establishing SSL connection without server's identity verification is not recommended
注意:出现这类提示也不会影响对数据库的增删改查操作,所以不用紧张.. 在运行练习时出现下面的错误信息提示: Establishing SSL connection without server's i ...
- 如何彻底卸载Vs2015
当我们卸载了VS2015想再安装VS软件的时候,发现安装路径根本更改不了. 网上查的由很多方法. 要真的找注册表去完全删除时非常繁琐的这里可以使用的方法就是 先下载卸载软件 https://githu ...
- Photoshop CC2019破解版
Photoshop CC2019 精简版: 链接:https://pan.baidu.com/s/1PeFrhtLHxLRXCW_vMkAZDg 提取码:q6nl Photoshop CC2019: ...
- 【懒人专用系列】Xind2TestCase的初步探坑
公司最近说要弄Xind2TestCase,让我们组先试用一下 解释:https://testerhome.com/topics/17554 github项目:https://github.com/zh ...
- 洛谷P5055 【模板】可持久化文艺平衡树(FHQ Treap)
题面 传送门 题解 日常敲板子.jpg //minamoto #include<bits/stdc++.h> #define R register #define inline __inl ...