UVA 227 Puzzle(基础字符串处理)
题目链接:
https://cn.vjudge.net/problem/UVA-227
/*
问题 输入一个5*5的方格,其中有一些字母填充,还有一个空白位置,输入一连串
的指令,如果指令合法,能够得到一个移动后的方格就输出方格,不能就输出
“This puzzle has no final configuration.” 解题思路
模拟,一个一个的读入字符,包括空格,再读入若干行指令,如果指令表面合法,进入模拟看内容是否合法,不合法直接输出提示。 易错点
读入和控制结束问题,注意读入指令后有一个换行需要处理
输出格式,将换行放在谜题数前面
*/
#include<cstdio>
#include<cstring> int check(char *s);
int move(char e[][],int x, int y,char *s);
int main()
{
char e[][],s1[],s[],ch;
int i,j,flag,t=,x,y,lens;
while(){
for(i=;i<=;i++){
gets(e[i]+);
if(i == && e[][] == 'Z'){
return ;//控制结束
}
} //整合指令
memset(s,,sizeof(char)*);
memset(s1,,sizeof(char)*);
while(){
scanf("%s",s1);
strcat(s,s1);
lens=strlen(s);
if(s[lens-] == '')
break;
}
getchar();//注意吃掉一个换行 //找到空白位置
for(i=;i<=;i++){
for(j=;j<=;j++){
if(e[i][j] == ' '){
x=i;
y=j;
}
}
} if(t != )//注意格式
printf("\n"); printf("Puzzle #%d:\n",++t);
if(check(s)){
if(move(e,x,y,s))
for(i=;i<=;i++){
for(j=;j<=;j++){
if(j == )
printf("%c",e[i][j]);
else
printf(" %c",e[i][j]);
}
printf("\n");
}
else
printf("This puzzle has no final configuration.\n");
}
else
printf("This puzzle has no final configuration.\n");
}
return ;
} int move(char e[][],int x, int y,char *s){
int len=strlen(s),i;
for(i=;i<len-;i++){
if(s[i] == 'A'){
if(x- < ) return ;
e[x][y]=e[x-][y];
e[x-][y]=' ';
x--;
}
else if(s[i] == 'B'){
if(x+ > ) return ;
e[x][y]=e[x+][y];
e[x+][y]=' ';
x++;
}
else if(s[i] == 'R'){
if(y+ > ) return ;
e[x][y]=e[x][y+];
e[x][y+]=' ';
y++;
}
else if(s[i] == 'L'){
if(y- < ) return ;
e[x][y]=e[x][y-];
e[x][y-]=' ';
y--;
}
}
return ;
} int check(char *s)
{
int len=strlen(s),i;
for(i=;i<len-;i++){
if(s[i] != 'A' && s[i] != 'B' && s[i] != 'R' && s[i] != 'L')
return ;
}
return ;
}
UVA 227 Puzzle(基础字符串处理)的更多相关文章
- UVA 227 Puzzle - 输入输出
题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...
- uva 227 Puzzle
Puzzle A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained ...
- uva 227 Puzzle (UVA - 227)
感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...
- python基础——字符串和编码
python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...
- Python 基础 字符串拼接 + if while for循环
注释单行注释 #多行注释 ''' 三个单引号或者三个双引号 """ ''' 用三引号引住可以多行赋值 用户交互 input 字符串拼接 + ""%( ...
- Java基础-字符串(String)常用方法
Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...
- Java基础-字符串连接运算符String link operator
Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...
- OC基础--字符串
前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...
- Puzzle UVA - 227 PE代码求大佬指点
A children's puzzle that was popular 30 years ago consisted of a 5×5 frame which contained 24 smal ...
随机推荐
- CI、CD和dev-ops概念
传统的开发方式是:需求方提供文档,实现方按照文档一步步开发,中间很少变动和修改. 但是随着市场的变化,产品更新迭代的加快,也要求开放方更快的响应变化,用最短的时间开发,部署上线. 这样,持续集成(CI ...
- devexpress gridview 添加按钮
#region 添加按钮事件 private RepositoryItemButtonEdit CreateRepositoryItemButtonEdit(Dictionary<object, ...
- openvSwitch 基本命令
建立ovs接口连接两个namespace组成二层网络 环境搭建拓扑 br0 +--------------------------------------+ +--+ +--+ +---+ | tap ...
- winform自动升级方案
未涉及过winform升级,研究一阵,大致出来个不成熟的方案. 我的解决方案(判断升级,升级程序下载安装包的压缩包,解压,自动安装,重新启动程序). 1.首先根据服务器中软件版本号和本地软件版本号是否 ...
- mac下查看jdk安装版本及安装目录
使用IntelliJ idea新建工程时需要查看jdk安装目录,记录下来为以后备用. mac自带jdk,查看jdk版本: IcarusdeMacBook-Pro:~ icarus$ java -ver ...
- Linux系统文件与目录管理(1)
文件与目录的操作 在Linux系统的文件与目录的管理上,不外乎『显示属性』.『拷贝』.『删除文件』.『移动文件或目录』.『重命名』等常用操作,由于文件与目录的管理在 Linux当中是很重要的,尤其是每 ...
- MySQL order by的实现
1.使用索引的已有顺序 2.filesort算法 filesort算法的执行流程 filesort相关的参数 sort_buffer_size 算法排序缓冲区的大小,线程级缓存 max_l ...
- django~项目的文件位置的重要性
前几天我犯了个很低级的错误 就是把文件的地址放错地方了~~ 我把templates文件放进mysite文件里面了 和templatetags文件同级了 所以一直报错 说找不到模板的文件 实际上te ...
- python学习笔记12-深浅拷贝
以上为浅拷贝. .copy()函数 赋值:数据完全共享(=赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变 如果是不可变类型(immutable) ...
- Redis 入门知识
Redis 的前世今生 Redis的诞生于2008年,由Salvatore Sanfilippo开发.最初作者在开发一个网站时,需要实现一个高性能的队列功能,在使用Mysql无果后,决定自己造一个轮子 ...