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归位.这样每个数最多操作两次即可归位. # ...
随机推荐
- Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题
问题详情如下: 解决办法 这个是由于mysql-connector-java的bug造成的,出错时我用的是mysql-connector-java-5.1.10-bin.jar,更新成mysql-co ...
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】
本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...
- shell脚本自动更新git
gitpull.sh #!/bin/bash cd /home/wwwroot/default/mouse && git pull cd /home/wwwroot/default/s ...
- [bzoj3073]Journeys
https://www.zybuluo.com/ysner/note/1295471 题面 \(Seter\)建造了一个很大的星球,他准备建造\(N\)个国家和无数双向道路.\(N\)个国家很快建造好 ...
- IDEA kafka producer数据输出缓慢 和 kafka consumer 报错的处理
问题1. IDEA 中Kafa_Producer程序数据输出缓慢 但不报错 问题2. Kafa_Consumer程序报错: 17/11/10 11:31:11 ERROR ReceiverTracke ...
- http-2.4
http-2.4 1)新特性 (1)MPM 支持运行为DSO 机制:以模块形式按需加载 (2)event MPM 生产环境可用 (3)异步读写机制 (4)支持每模块及每目录的单独日志级别定义 (5)每 ...
- bzoj 4300: 绝世好题【dp】
设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i-1中1<<j&a[i]!=0的位+1转移来 然后i维是不需要的,答案直接在dp过程中去max即可 #i ...
- [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(2)添加一个 App Store 图标
您必须提供一个 App Store 图标,用于在 App Store 中的不同部分展示您的 App.请遵照 Human Interface Guidelines(<人机界面准则>)创建您的 ...
- sshd服务器搭建管理和防止暴力破解
1.1 Linux服务前期环境准备,搭建一个RHEL7环境 1.2 sshd服务安装-ssh命令使用方法 1.3 sshd服务配置和管理 1.4 防止SSHD服务暴力破解的几种方式 1.1 Linux ...
- LN : leetcode 3 Longest Substring Without Repeating Characters
lc 3 Longest Substring Without Repeating Characters 3 Longest Substring Without Repeating Characters ...