题目(截图)




分析

这个题的难点有两个,一个是输入(不能用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(自认为是模拟)相关推荐

  1. 【PAT甲级真题整理五】1121~1155

    终于考完了qaq把最后一堆也整理出来了 目录 1121 Damn Single(25)set.map的使用 1122 Hamiltonian Cycle(25)哈密顿回路 1123 Is It a C ...

  2. 【UVA - 227】Puzzle (模拟,水题)

    题干: Puzzle  A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contain ...

  3. matlab模拟小游戏,基于MATLAB的小游戏(puzzle)

    更新: 没有素材或者.mat文件看着博客也比较难实现,下面是完整的游戏文件 链接:https://pan.baidu.com/s/1CH_vFQQ_m2rIXde-VtkPWg 提取码:uo2x 游戏 ...

  4. HDU 4708 Rotation Lock Puzzle(模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4708 题目大意:给定一个方形矩阵,边长为3-10的奇数.每一圈的数字可以沿着顺时针方向和逆时针方向旋转 ...

  5. Puzzle——模拟

    原题链接: https://vjudge.net/problem/UVA-227 题目描述: 1 > 有一个5*5的网格,只有一个格子是空格,其余的都是字母. 2 > 4个指令 A,B,L ...

  6. 1128 N Queens Puzzle (20 分)【难度: 一般 / 知识点: 模拟】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360 每一个点只会出现一次 任意俩点的横距离和总距 ...

  7. CF1474A Puzzle From the Future (模拟

    添加链接描述 #include<bits/stdc++.h> using namespace std; int main(){int T;cin>>T;while(T--){i ...

  8. Eight puzzle --HOJ 11918

    1.题目类型:模拟.哈希表.BFS. 2.解题思路:(1)模拟Eigh Puzzle的变换方式,并记录在数组中 :(2)由于变换的最终结果相同,所以采用反向的BFS遍历所有情况,并记录所有情况:(3) ...

  9. UVA227 Puzzle

    问题链接:UVA227 Puzzle.基础训练级的问题,用C语言编写程序. 问题简述:一个5×5的网格,一个格子是空的,其他格子各有一个字母,一共有四种指令:A,B,L,R,分别表示把空格上.下.左. ...

最新文章

  1. 自己封装js组件 - 中级
  2. 贪心、递归、递推以及动态规划算法的分析与对比
  3. 事件委托能够优化js性能
  4. Vue中Web组态实现方案-WebTopo的使用
  5. springboot 不响应字段为空_面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?...
  6. 群辉发布RackStation系列机型——RS3621RPxs、RS3621xs+与RS4021xs+
  7. windownavigatorscreenlocation
  8. 强悍的 Linux —— 强悍的 find
  9. excel甘特图模板_不做规范!收数就是个灾难!Excel收集数据套路了解一下
  10. Oracle基本数据范例存储名堂浅析
  11. 锐捷 重启计算机,锐捷客户端反复显示重新启动的处理办法
  12. PROSOFT模块MVI56E-MNETC、MVI56-PDPMV1、PTQ-PDPMV1、AN-X2-AB-DHRIO、MVI56-MBP、MVI56-MNETR、MVI56-MNET
  13. manjaro i3wm 的一些配置
  14. 什么是计算机病毒?是怎么产生的?
  15. 牛客java选择题每日打卡Day2
  16. 博士申请 | 香港大学黄凯斌教授招收6G通信与机器学习方向全奖博士生
  17. Spatial4j简介
  18. Android双系统实现
  19. ToolBar修改返回按钮图标
  20. 10个精选国外免费空间推荐

热门文章

  1. Python 中列表与元组的异同
  2. 我的计算机生涯--开始
  3. 什么从什么写短句_什么是什么,能什么写句子补充完整
  4. MFC如何调用Flash控件
  5. 数学之美笔录(1):统计语言模型
  6. 数字后端 - STA
  7. 空间解析几何 | 空间曲线与平面 几何量推导
  8. 关于搭建Vue项目的顺序及遇到的问题
  9. 打通MySQL架构和业务的任督二脉
  10. 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...