题解:谜题(UVa 227)
来源:互联网 发布:python import path 编辑:程序博客网 时间:2024/05/17 10:57
- 题目链接:https://vjudge.net/problem/UVA-227
- 解题思路:略;
- AC截图:
- AC代码:
#include<stdio.h>#include<string.h>char s[5][7];int x,y;int num=0;int main(){ while(fgets(s[0],7,stdin)){ if(s[0][0]=='Z')return 0;//终止输入标志 for(int i=1;i<5;i++) fgets(s[i],7,stdin);//使用fgets而不用scanf("%s",s[i]); //是为了能让空格也输入进s[i], //读取25宫格完毕 for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(s[i][j]==' '){ x=i;y=j;break; }//找到空格在数组中的位置 char move[20]; int i=0; while(move[i]=getchar()){ if(move[i]=='\n')i--;//case中有间断输入 if(move[i]=='0')break;//输入结束 else i++; } move[i]='\0';//因为getchar()不会主动添加上字符结束标志 //所以此处手动添加; getchar();//吃掉最后缓冲区的换行符 int x1,y1;int flag=0; for(i=0;move[i];i++){ switch(move[i]){ case('A'):x1=x-1;y1=y;break; case('B'):x1=x+1;y1=y;break; case('L'):x1=x;y1=y-1;break; case('R'):x1=x;y1=y+1;break; default: flag=1;//标记处非法移动指令 } //找到了最终的位置x1,y1 if(x1<0||x1>4||y1<0||y1>4){ flag=1;break; //标记出超越范围的移动结果 }else{ s[x][y]=s[x1][y1]; s[x1][y1]=' '; //交换了空格和终位置的字符 x=x1;y=y1; //更新空格位置 } } if(num)printf("\n"); printf("Puzzle #%d:\n",++num); if(flag)printf("This puzzle has no final configuration.\n"); else { for(i=0;i<5;i++){ printf("%c",s[i][0]); for(int j=1;j<5;j++) printf(" %c",s[i][j]);//注意输出格式中有空格 printf("\n"); } } } }
5. 注意点: 本题不容易AC的地方在于如何处理好字符的输入输出,其中fgets的地方用gets也可以运行,但是平台上通不过,根据本书前面的介绍,gets函数很可能已经被废除,因此也尽量不要再使用。而fgets(buf,max,fin/stdin)表示从文件fin或者标准输入流stdin中读入直到遇见’\n’(并作为最后一个字符包含进数组)或者直到max-1个字符到char buf[max]中,然后在后面自动加上‘\0’;而如果改用scanf(“%s”,s[i])则会遇到空格后自动结束该行内容的输入,造成错误。
以上代码也许还不是很好,欢迎朋友评论以交流和分享更优秀的代码。
0 0
- 题解:谜题(UVa 227)
- uva 10382题解(贪心)
- 题解:循环小数(UVa 202)
- 题解:盒子(UVa 1587)
- uva 10905 题解(贪心水题)
- uva 4256题解(简单dp)
- 题解:周期串(UVa 455)
- 题解:DNA序列(UVa 1368)
- 题解:换低档装置(UVa 1588)
- 题解:浮点数(UVa 11809)
- 题解:子串(UVa 10304)
- UVA 100题解
- UVA 401 Palindromes 题解
- APOC-UVA-0001 题解
- APOC-UVA-0002 题解
- UVa 10152 - ShellSort 题解
- APOC-UVA-0003 题解
- Uva 11732题解
- 什么是CRM
- java__switch比赛判断
- Fiddler模拟低速网路环境弱网测试
- ffmpeg编译参数(英文)
- 4. OP-TEE+qemu的编译--bios.bin镜像的编译
- 题解:谜题(UVa 227)
- 开发工具,目录和文件,INCLUDES.H文件
- python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
- 模式识别之k-折交叉验证(k-fold crossValidation)
- spark java.utils.List 没有map方法的问题
- Redis介绍和使用场景
- python windows安装
- 解决listview层层嵌套的另外一种思路(细节说明)
- mysql数据库中删除数据的三种形式 drop和 truncate 和 delete