(入门)uva 227 Puzzle
2016-01-24 12:04
597 查看
类似于模拟。。
写法可供参考。。。
写法可供参考。。。
#include <cstdio> #include <cstring> char puzzle[7][7];int p1,p2; char readchar(); void setwall(); int move(const char); int main() { int kase=0,first=1; while(1) { char c,moves[100]; if((c=readchar())=='Z') return 0; else { int len_m; puzzle[1][1]=c; for(int k=2;k<=5;k++) puzzle[1][k]=getchar(); getchar(); for(int i=2;i<=5;i++){ for(int j=1;j<=5;j++){ puzzle[i][j]=getchar(); if(puzzle[i][j]==' ') p1=i,p2=j; } getchar(); } setwall(); for(len_m=0;(moves[len_m]=readchar())!='0';len_m++); len_m=0; if(first) first=0; else printf("\n"); printf("Puzzle #%d:\n",++kase); int n=strlen(moves); for(int i=0;i<n;i++){ if(!move(moves[i])) {printf("This puzzle has no final configuration.\n"); goto ext;} } for(int i=1;i<6;i++){ first=1; for(int j=1;j<6;j++) { if(first) first=0,printf("%c",puzzle[i][j]); else printf( " %c",puzzle[i][j]); } printf("\n"); } ext :; } } } char readchar(){ int c; do(c=getchar()) ;while(c=='\n' || c=='\r' ); return c; } void setwall() { for(int i=1;i<=5;i++) puzzle[0][i]='\0',puzzle[i][0]='\0',puzzle[6][i]='\0',puzzle[i][6]='\0'; } int move(const char ch){ switch(ch) { case 'A': if(puzzle[p1-1][p2]=='\0') return 0; puzzle[p1][p2]=puzzle[p1-1][p2];puzzle[--p1][p2]=' '; break; case 'B': if(puzzle[p1+1][p2]=='\0') return 0; puzzle[p1][p2]=puzzle[p1+1][p2];puzzle[++p1][p2]=' '; break; case 'L': if(puzzle[p1][p2-1]=='\0') return 0; puzzle[p1][p2]=puzzle[p1][p2-1];puzzle[p1][--p2]=' '; break; case 'R': if(puzzle[p1][p2+1]=='\0') return 0; puzzle[p1][p2]=puzzle[p1][p2+1];puzzle[p1][++p2]=' '; break; default:; } return 1; }
相关文章推荐
- 【C++】变量(七) 参量
- 【C++】变量(六) 常变量
- 【C++】变量(五) 变量名的作用域以及变量定义的一些习惯
- 【C++】变量(四) 变量的声明和定义
- 【C++】变量(三) 变量的初始化
- 【C++】变量(一) 什么是变量?
- 【C++】基本的数据类型(二) 字符型常量的表示方法
- 【C++】If语句
- 【C++】 显示一些数字
- 【C++】入门训练
- (入门)uva 455
- c++的基本语言知识(一)
- c++的基本语言知识(二)
- c++的基本语言知识(三)
- c++的基本语言知识(四 )
- 用C/C++解决一些数学问题(一)
- C/C++的基本语言知识(五)
- C++已经开始了
- C++——宏观了解
- C++深入体验之旅(索引篇)