Uva-227-Puzzle
来源:互联网 发布:知乎有趣的女朋友 编辑:程序博客网 时间:2024/05/02 02:59
这道题目也是一道比较简单的题目,但是其中涉及很多个情况判断。
代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>main(){ int i,j,leng,fgi,fgj,puzz = 1,PD =1; char a[6][6],order[100],pa[6]; while(gets(pa) != NULL && strcmp(pa, "Z") != 0) { if(strlen(pa) == 1) return 0; for(i = 0 ;i < 5;i++) a[0][i] = pa[i]; gets(pa); for(i = 0 ;i < 5;i++) a[1][i] = pa[i]; gets(pa); for(i = 0 ;i < 5;i++) a[2][i] = pa[i]; gets(pa); for(i = 0 ;i < 5;i++) a[3][i] = pa[i]; gets(pa); for(i = 0 ;i < 5;i++) a[4][i] = pa[i]; goto start;start: gets(order); leng = strlen(order); for(i = 0; i < 5; i++) { for(j = 0; j < 5; j++) if(a[i][j] == ' ') { fgi = i; fgj = j; goto loop; } } goto loop;loop: for(i = 0; i < leng-1; i++) { if(order[i] == 'A') { if(fgi == 0) PD = 0; //我曾一度在这里直接判断没有结果然后输出,但是这样做违反了题目会有多行移动指令的要求,被这个问题卡了很久。 else { a[fgi][fgj] = a[fgi-1][fgj]; a[fgi-1][fgj] = ' '; fgi = fgi-1; } } if(order[i] == 'B') { if(fgi == 4) PD = 0; else { a[fgi][fgj] = a[fgi+1][fgj]; a[fgi+1][fgj] = ' '; fgi = fgi+1; } } if(order[i] == 'R') { if(fgj == 4) PD = 0; else { a[fgi][fgj] = a[fgi][fgj+1]; //这里原来先是用temp做中间变量,然后倒换,但是会有崩溃问题,为何不知,只是想到了这个直接倒换的办法。 a[fgi][fgj+1] = ' '; fgj = fgj+1; } } if(order[i] == 'L') { if(fgj == 0) PD = 0; else { a[fgi][fgj] = a[fgi][fgj-1]; a[fgi][fgj-1] = ' '; fgj = fgj-1; } } } if(order[i] == '0') goto endstep; else { if(order[i] == 'A') { if(fgi == 0) PD = 0; else { a[fgi][fgj] = a[fgi-1][fgj]; a[fgi-1][fgj] = ' '; fgi = fgi-1; } } if(order[i] == 'B') { if(fgi == 4) PD = 0; else { a[fgi][fgj] = a[fgi+1][fgj]; a[fgi+1][fgj] = ' '; fgi = fgi+1; } } if(order[i] == 'R') { if(fgj == 4) PD = 0; else { a[fgi][fgj] = a[fgi][fgj+1]; a[fgi][fgj+1] = ' '; fgj = fgj+1; } } if(order[i] == 'L') { if(fgj == 0) PD = 0; else { a[fgi][fgj] = a[fgi][fgj-1]; a[fgi][fgj-1] = ' '; fgj = fgj-1; } } goto start; }endstep: if(PD != 1) { if(puzz != 1) printf("\n"); //这里如果不能处理好空格问题会wrong answer. printf("Puzzle #%d:\n",puzz); printf("This puzzle has no final configuration.\n"); PD = 1; } else { if(puzz != 1) printf("\n"); printf("Puzzle #%d:\n",puzz); for(i = 0; i < 5; i++) { for(j = 0; j < 4; j++) printf("%c ",a[i][j]); printf("%c\n",a[i][4]); } }goto bk;bk: puzz++;}}
by
AZ..呆瓜看呆瓜,呆瓜爱呆瓜。
0 0
- UVa 227 - Puzzle
- UVa 227 - Puzzle
- Uva-227-Puzzle
- UVa 227 Puzzle
- UVA - 227 Puzzle
- Uva-227 - Puzzle-AC
- UVa 227 - Puzzle
- UVa-227 - Puzzle
- 【Uva 227】 Puzzle
- UVa 227 - Puzzle
- UVa 227 Puzzle
- UVA - 227 Puzzle
- Uva - 227 - Puzzle
- UVA - 227 Puzzle
- UVa 227 Puzzle
- UVA 227 Puzzle
- UVa 227 - Puzzle
- UVa 227 Puzzle
- quazip 问题总结
- JSTL标签学习
- HTML syntax highlighting with the Rich Edit control
- Android Sensor 架构深入剖析
- web中定义过滤器验证登录(未登录没有权限访问页面)
- Uva-227-Puzzle
- Painless streaming of rich text to/from CRichEditCtrl
- Android-Universal-Image-Loader 图片异步加载类库的使用
- HDU - 4965 Fast Matrix Calculation
- 运算符重载之(),+
- 金色十月线上编程比赛第二题:解密
- php中把URL中的汉字转码
- 剑指offer---圆圈中最后剩下的数字
- BM算法的shift1表是在所有情况下移动都是最快的吗?