【OJ-UVa227】
耗时一周。哭。
本题重在输入输出。所以对英文题目的理解非常重要。看清楚题目,省时省力。
题目要点:
1、开始有5×5的数据,每行仅有5个字符。注意:样例输入中的尾部空格是无法复制的(UVa官网上),其实是有的,所以不用考虑有多个空格或略过行尾空格直接换行的情况(我当时看样例输入行尾空格被略过直接换行,而大费周折)。
Each display line contains exactly 5 characters, beginning with the character on the leftmost square
2、动作指令仅有 A B L R 组成,可不用考虑其它非法字符,但是要考虑换行符。
The sequence of moves is represented by a sequence of As, Bs, Rs
3、动作指令可以出现多行,总以 0 结束。
This sequence of moves may be spread over several lines, but it always ends in the digit 0
4、输出格式有特殊要求:两个谜题puzzle中间用空行隔开。
Separate output from different puzzle records by one blank line.
简单清晰的AC代码可参考这里。以防该博客被删,我粘贴到下面。
顺便写个注解。
1、读取单个字符存储到 s[5][5] 中
2、判断首个字符 是否 'Z'
3、顺便找出 空格符
4、吞掉5*5数据每行末尾的 换行符
这样,5*5的数据就存储好了。
1、读取动作指令,进行移动(和拼图类似)
1.1、判断动作指令是否合规
1.2、空格和要移动的字符互换值
1.3、更新空格的坐标
2、吞掉结束标志字符 0
3、如果是首个puzzle,不输出\n(如果不是首个puzzle,则输出每两个puzzle的中间空行)
4、打印 Puzzle #1:
5、第一列字符,打印 字符,第二列到第五列,打印 字符+空格,最后每行补个 \n 换行符
#include <cstdio>
#include <iostream>
using namespace std;
void Swap(char &s1,char &s2); int main()
{
char ans,s[][];
int dx,dy,Case=;//用于储存空格位置
while(true){
bool flag=true;
for(int i=;i<;i++){
for(int j=;j<;j++){
scanf("%c",&s[i][j]);
if(s[][]=='Z') return ;
if(s[i][j]==' '){
dx=i; dy=j;
}
}
getchar();
}
while((ans=getchar())!=''){
if(ans=='A'&&dx->=){
Swap(s[dx][dy],s[dx-][dy]);
dx-=;
}
else if(ans=='B'&&dx+<=){
Swap(s[dx][dy],s[dx+][dy]);
dx+=;
}
else if(ans=='L'&&dy->=){
Swap(s[dx][dy],s[dx][dy-]);
dy-=;
}
else if(ans=='R'&&dy+<=){
Swap(s[dx][dy],s[dx][dy+]);
dy+=;
}
else if(ans!='\n') flag=false;
}
getchar();
if(Case) printf("\n");
printf("Puzzle #%d:\n",++Case);
if(flag){
for(int i=;i<;i++){
for(int j=;j<;j++)
if(!j) printf("%c",s[i][j]);
else printf(" %c",s[i][j]);
printf("\n");
}
}
else
printf("This puzzle has no final configuration.\n");
}
return ;
}
void Swap(char &s1,char &s2){
char c=s1;
s1=s2;
s2=c;
}
【OJ-UVa227】的更多相关文章
- 【数据结构】【图文】【oj习题】 图的拓扑排序(邻接表)
拓扑排序: 按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系,由此所得顶点的线性序列称之为拓扑有序序列.显然对于有回路的有向图得不 ...
- 【水题】NOIP201504推销员
NOIP201504推销员 [问题描述] 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家住户,第 ...
- 【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ...
- 【POJ 1125】Stockbroker Grapevine
id=1125">[POJ 1125]Stockbroker Grapevine 最短路 只是这题数据非常水. . 主要想大牛们试试南阳OJ同题 链接例如以下: http://acm. ...
- CJOJ 1308 【HNOI 2002 】营业额统计 / CodeVS 1296 营业额统计(STL,二分)
CJOJ 1308 [HNOI 2002 ]营业额统计 / CodeVS 1296 营业额统计(STL,二分) Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一 ...
- 【NOIP2017 OFO】
·奇怪的标题可能预示着这一篇博文不是讲算法或者分享题目的吧. [一只情绪化的兔子] 今年的11月12日出奇地比去年温暖.两场比赛结束后的我们在临走前去尝试了OFO共享单车,在成都电子科技大学 ...
- 【OI新闻】2016.10.06
今天有人说好多OJ都狗记邓了- 翻了一下,恭喜以下OJ赢得大奖,获得狗记邓徽章一枚 一等奖Codevs 二等奖Bzoj 三等奖洛谷 后记-感悟 如果正在为OJ发愁的朋友,不要悲伤,不要心急,换一换OJ ...
- 图像手工画效果【QT+OpenCV】
效果例如以下 [木雕]
- P2699 【数学1】小浩的幂次运算
原题链接 https://www.luogu.org/problemnew/show/P2699 P2699 [数学1]小浩的幂次运算 首先第一眼看这个题就知道要暴力枚举w^i 看是否在区间[l,r] ...
- 【算法入门】深度优先搜索(DFS)
深度优先搜索(DFS) [算法入门] 1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解 ...
随机推荐
- 【转】CentOS6下安装mysql后,重置root密码方法
本文转自:CentOS6下安装mysql后,重置root密码方法 centos下安装mysql,居然不知道root用户密码,本想重装,不过还是先度娘了一些,发现这篇文章,刚好解决我的燃眉之急,太赞了. ...
- 原生JS写的ajax函数
参照JQuery中的ajax功能,用原生JS写了一个ajax,功能相对JQuery要少很多,不过基本功能都有,包括JSONP. 调用的方式分为两种: 1. ajax(url, {}); 2. ajax ...
- 使用mermain用Markdown的语法画流程图和UML图
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.
- Investigating issues with Unmanaged Memory. First steps. (转载)
原文:http://kate-butenko.blogspot.tw/2012/07/investigating-issues-with-unmanaged.html I want to write ...
- POI Excel解析
Maven 引入POI <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&l ...
- 堆(Heap)的实现
这次实现了堆,这个堆不是指系统堆栈的堆,是一种数据结构,见下图 堆的本质就是一个数组(上图中,红色的是值,黑色的是下标)简单的来说就是把一个数组看成是二叉树,就像上图 大堆和小堆分别是指根节点比孩子节 ...
- CSS文字有关属性
font-size|family|weight|style 大小字体加粗斜体 color|opacity 颜色透明度 height+line-height:垂直居中 overflow:hidden|v ...
- css 平行四边
在视觉设计中,平行四边形往往给人一种动感. 要生成一个平行四边形,只要通过css变形,就可做到: -webkit-transform: skewX(-45deg); 那么生成一个平行四边形的按钮呢?列 ...
- vuejs源码摘抄
订阅功能的部分实现代码如下: /* */ var uid = 0; /** * A dep is an observable that can have multiple * directives s ...
- Infor SyteLine创建一个数据维护窗口
上次有在SyteLine解决一个问题<匹配与显示中文说明> http://www.cnblogs.com/insus/p/3396541.html .这些数据需要数据库管理员在数据库才能维 ...