【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开始,沿着一条路一直走到底,如果发现不能到达目标解 ...
随机推荐
- Scala安装及开发环境搭建
最近想学习下scala,为后面转大数据做一些沉淀. 1. 首先保证jdk已经成功安装 2. 去官网下载scala安装程序 http://www.scala-lang.org/download/all. ...
- TreeMap和TreeSet简单应用
建一个实体类并实现Comparable接口重写compareTo方法 public class pojo implements Comparable<pojo> { private int ...
- Python编码规范杂记(很乱:))
Python编码规范 导入模块 每一个(第三方)模块的导入都需要两个import语句, 如下 使用import some的方式导入模块, 如果有还有子模块的话, 则from father.son im ...
- SQLServer 2016 Express 安装部署,并配置支持远程连接
在项目中需要用到SQLServer,于是安装部署了SQLServer,部署的过程中遇到了一下问题,记录一下以便之后遇到同样问题能快速解决. 一.安装包下载 首先下载必要的安装包: 1.SQLServe ...
- jquery——write less,do more
rite less, do more.这句话想必是很多语言都提倡的. 在此举三个jquery的应用体现 一.绑定多个事件类型 $("div").bind("mouseov ...
- 如何用 windows+github搭建一个优美的hexo博客
1.Hexo简单介绍 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 风一般的速度Hexo基于Nod ...
- Ubuntu16.04安装Docker1.12+开发实例+hello world+web应用容器
本次主要是详细记录Docker1.12在Ubuntu16.04上的安装过程,创建Docker组(避免每次敲命令都需要sudo),Docker常用的基本命令的总结,在容器中运行Hello world,以 ...
- 基本算法思想Java实现的详细代码
基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...
- Browser进程和浏览器内核(Renderer进程)的通信过程
看到这里,首先,应该对浏览器内的进程和线程都有一定理解了,那么接下来,再谈谈浏览器的Browser进程(控制进程)是如何和内核通信的, 这点也理解后,就可以将这部分的知识串联起来,从头到尾有一个完整的 ...
- centos开启IPV6配置方法
目前国内大部分服务器和PC不支持IPV6地址的,但是服务器上本身是可以正常开启IPV6服务,有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址才行,因此本文档指导如何在centos服务器 ...