Puzzle(自认为是模拟)
题目(截图)
分析
这个题的难点有两个,一个是输入(不能用gets()),另一个是模拟移动空格的位置,搞定了这两点,AC就很easy啦。
代码+注释
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
using namespace std;
int main()
{char a,b;int num=0;int flag=1;char arr[10][10]; //储存输入的五行字符串。while(1) //死循环,若输入Z,则主观终止循环。{scanf("%c",&arr[0][0]);if(arr[0][0]=='Z') //判断是否需要终止循环。break;for(int i=1; i<=4; i++) //输入第一行上下的字符串。{scanf("%c",&arr[0][i]);}getchar(); //吸收换行符(很重要!!!!)。for(int i=1;i<=4;i++) //输入剩下的四行字符串。{for(int j=0;j<5;j++){scanf("%c",&arr[i][j]);}getchar();}int x1=0,y1=0,x2=0,y2=0;for(int i=0; i<5; i++) //两重循环寻找空格位置(坐标表示)。{for(int j=0; j<5; j++){if(arr[i][j]==' '){x1=i;y1=j;break;}}}flag=1;while(cin>>a) //输入控制空格移动的字符 。{x2=x1; //每输入一次都要重置x2,y2。y2=y1; //这两行很关键!!!!!非常关键!!!!!!!if(a=='0')break; //输入完毕则停止循环。else if(a=='A') //分情况讨论,模拟空格位置的变化。{x2=x1-1;y2=y1;}else if(a=='B'){x2=x1+1;y2=y1;}else if(a=='R'){x2=x1;y2=y1+1;}else if(a=='L'){x2=x1;y2=y1-1;}if(x2<0||x2>4||y2<0||y2>4) //若发生非法移动,则flag=0。{flag=0;while(1) //注意!!!一定要输入完剩下的控制空格移动的字符!!!!{cin>>a;if(a=='0')break;}break;}else //模拟交换位置。{arr[x1][y1]=arr[x2][y2];arr[x2][y2]=' ';x1=x2;y1=y2;}}getchar();if(num!=0) //判断换行的条件。{cout<<endl;}num++;cout<<"Puzzle #"<<num<<":"<<endl; //输出样例的次序。if(flag==0)cout<<"This puzzle has no final configuration."<<endl;else{for(int i=0; i<5; i++){for(int j=0; j<5; j++){cout<<arr[i][j];if(j!=4)cout<<" ";}cout<<endl;}}}return 0;
}
Puzzle(自认为是模拟)相关推荐
- 【PAT甲级真题整理五】1121~1155
终于考完了qaq把最后一堆也整理出来了 目录 1121 Damn Single(25)set.map的使用 1122 Hamiltonian Cycle(25)哈密顿回路 1123 Is It a C ...
- 【UVA - 227】Puzzle (模拟,水题)
题干: Puzzle A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contain ...
- matlab模拟小游戏,基于MATLAB的小游戏(puzzle)
更新: 没有素材或者.mat文件看着博客也比较难实现,下面是完整的游戏文件 链接:https://pan.baidu.com/s/1CH_vFQQ_m2rIXde-VtkPWg 提取码:uo2x 游戏 ...
- HDU 4708 Rotation Lock Puzzle(模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4708 题目大意:给定一个方形矩阵,边长为3-10的奇数.每一圈的数字可以沿着顺时针方向和逆时针方向旋转 ...
- Puzzle——模拟
原题链接: https://vjudge.net/problem/UVA-227 题目描述: 1 > 有一个5*5的网格,只有一个格子是空格,其余的都是字母. 2 > 4个指令 A,B,L ...
- 1128 N Queens Puzzle (20 分)【难度: 一般 / 知识点: 模拟】
https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360 每一个点只会出现一次 任意俩点的横距离和总距 ...
- CF1474A Puzzle From the Future (模拟
添加链接描述 #include<bits/stdc++.h> using namespace std; int main(){int T;cin>>T;while(T--){i ...
- Eight puzzle --HOJ 11918
1.题目类型:模拟.哈希表.BFS. 2.解题思路:(1)模拟Eigh Puzzle的变换方式,并记录在数组中 :(2)由于变换的最终结果相同,所以采用反向的BFS遍历所有情况,并记录所有情况:(3) ...
- UVA227 Puzzle
问题链接:UVA227 Puzzle.基础训练级的问题,用C语言编写程序. 问题简述:一个5×5的网格,一个格子是空的,其他格子各有一个字母,一共有四种指令:A,B,L,R,分别表示把空格上.下.左. ...
最新文章
- 自己封装js组件 - 中级
- 贪心、递归、递推以及动态规划算法的分析与对比
- 事件委托能够优化js性能
- Vue中Web组态实现方案-WebTopo的使用
- springboot 不响应字段为空_面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?...
- 群辉发布RackStation系列机型——RS3621RPxs、RS3621xs+与RS4021xs+
- windownavigatorscreenlocation
- 强悍的 Linux —— 强悍的 find
- excel甘特图模板_不做规范!收数就是个灾难!Excel收集数据套路了解一下
- Oracle基本数据范例存储名堂浅析
- 锐捷 重启计算机,锐捷客户端反复显示重新启动的处理办法
- PROSOFT模块MVI56E-MNETC、MVI56-PDPMV1、PTQ-PDPMV1、AN-X2-AB-DHRIO、MVI56-MBP、MVI56-MNETR、MVI56-MNET
- manjaro i3wm 的一些配置
- 什么是计算机病毒?是怎么产生的?
- 牛客java选择题每日打卡Day2
- 博士申请 | 香港大学黄凯斌教授招收6G通信与机器学习方向全奖博士生
- Spatial4j简介
- Android双系统实现
- ToolBar修改返回按钮图标
- 10个精选国外免费空间推荐