题目链接:

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(基础字符串处理)的更多相关文章

  1. UVA 227 Puzzle - 输入输出

    题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...

  2. uva 227 Puzzle

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

  3. uva 227 Puzzle (UVA - 227)

    感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...

  4. python基础——字符串和编码

    python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...

  5. Python 基础 字符串拼接 + if while for循环

    注释单行注释 #多行注释 ''' 三个单引号或者三个双引号 """ ''' 用三引号引住可以多行赋值 用户交互 input 字符串拼接 +  ""%( ...

  6. Java基础-字符串(String)常用方法

    Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...

  7. Java基础-字符串连接运算符String link operator

    Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...

  8. OC基础--字符串

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  9. Puzzle UVA - 227 PE代码求大佬指点

    ​ A children's puzzle that was popular 30 years ago consisted of a 5×5 frame which contained 24 smal ...

随机推荐

  1. java 堆排序的实现

    堆就是一个完全二叉树,堆要求是指 该节点大于它的两个子节点.而两个字节点大小不一定. 堆排序的最坏时间复杂度为nlog(n),平均也为nlog(n),占用空间为o(1),是一种比较排序算法. 堆排序也 ...

  2. [LintCode] Permutations

    http://www.lintcode.com/en/problem/permutations/# Given a list of numbers, return all possible permu ...

  3. JS原生事件处理(跨浏览器)

    一.关于获取事件对象 FF有点倔强,只支持arguments[0],不支持window.event.这次真的不怪IE,虽然把event作为window的属性不合规范,但大家都已经默许这个小问题存在了, ...

  4. Node.js之绝对选择(2018版)

    [这篇是很早期的文字,由于引用较广泛,担心误导,故按照现在的情形做一些修改] 几年前,完全放弃Asp.net,彻底脱离微软方向.Web开发,在公司团队中,一概使用Node.js.Mongodb.Git ...

  5. ASP.NET MVC高亮显示当前页面菜单

    1.创建MvcHtmlExtension扩展类 public static class MvcHtmlExtension { public static MvcHtmlString MenuLink( ...

  6. 【vue】项目编译报错‘npm ERR! **@**dev: `webpack-dev-server --inline --progress --config ’’

    关于npm ERR! **@**dev: `webpack-dev-server --inline --progress --config‘ 原因:这是新版webpack存在的BUG,卸载现有的新版本 ...

  7. .net程序和管理员权限的一些事

    1.对某个方法设置管理员权限运行(未考证)(假的,必须以管理员权限启动,不然报错) [PrincipalPermission(SecurityAction.Demand, Role = @" ...

  8. 【BZOJ3545】 [ONTAK2010]Peaks

    BZOJ3545 [ONTAK2010]Peaks Solution 既然会加强版,直接把强制在线的操作去掉就好了. 代码实现 #include<stdio.h> #include< ...

  9. Spring Cloud实践之服务注册与发现Eureka

    一.简述: 服务提供者producer与服务消费者consumer都注册到eureka server,然后服务consumer在其应用内直接调用producer的服务名来调用服务,而不是像之前一样调用 ...

  10. AJPFX平台讲述买卖、点差、单位,外汇的交易时间以及外汇交易者的参与者

    AJPFX平台讲解:买(多).卖(空).点差.单位 外汇保交易也就是通过外汇的升值和贬值来赚取利润.以EURUSD(欧元/美元)为例.假设目前价格为1.3820左右,即1欧元兑换1.3820美元.这个 ...