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 ...
随机推荐
- js-图片时间困难版(倒计时)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- RxSwift学习笔记2:Observable/生命周期/Event/oneNext/onError/onCompleted/
Observable 是 Rx 的根基 官网:http://reactivex.io/ github地址:https://github.com/ReactiveX/RxSwift Observabl ...
- foreach控件的运用(非原创)http://blog.chinaunix.net/uid-26884465-id-3416869.html
人们对从认识事物都有一个具体到抽象的过程,学习Jmeter也不例外,通过一个实例来进行学习,一方面可以让初学者有所见即所得的信心,另一方面,其实也是在初学者心中留下了对这事物的一个朦胧的印象,这在以后 ...
- 数据库操作类《SqlHelper》
一.背景 在看了一本书叫<Visual Studio 2010(C#)Windows数据库项目开发>后,觉得很多编程技术需要积累,因为一个简单的项目里包含的技术太多了,容易忘记.每次需要用 ...
- Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- pyqt5 Button.click 报错:argument 1 has unexpected type 'NoneType'
如上所示,在括号中,添加‘lambda:’,就可以成功运行,不知道为啥. 参考:https://blog.csdn.net/flhsxyz/article/details/79220936?utm_s ...
- Windows 网卡超过序列
以前连接过别的网络,现在重新装网已经排到"网络连接9"了,连以前起过的wifi名称(ssid)都变成"*** 3"了,怎么把以前的清空呢? 这是解决办法: wi ...
- 常用的SQL调优
1. 不要使用 select * ,使用select *的话会增加解析的时间,另外会把不需要的数据也给查询出来,数据传输也是耗费时间的. 2. 避免在 where 子句中使用 or 来连接条件,可以 ...
- python之ETL数据清洗案例源代码
#python语言 import pandas as pd import time data = pd.read_excel('ETL_数据清洗挑战.xlsx','测试数据',dtype=str)#读 ...
- FastDFD安装遇到的问题
如果按照步骤安装最后却发现 sudo service fdfs_trackerd start 启动不了,那么重启一下虚拟机就可以了