习题3-5 谜题 解题报告
2015-11-26 21:35
253 查看
题目:
![](https://img-blog.csdn.net/20151126213251449)
代码:
解析:
1、注意空格的位置交换与溢出判断。
2、将每个操作定义为一次交换过程即可轻松解出。
代码:
#include <iostream> #include <stdio.h> using namespace std; int p,q; int main() { char b,m; int i,j,n=1,k; char a[6][6]; for(;;) { cin.sync(); for(i=0;i<5;i++)//ÊäÈë { cin.getline(a[i],6); if(a[0][0]=='Z') { return 0; } for(j=0;j<5;j++) { if(a[i][j]=='\040') { p=i; q=j; } } } while(cin >> b) { k=1; if(b=='0') break; if(b=='A') { if(p-1<=4&&p-1>=0) { m=a[p][q]; a[p][q]=a[p-1][q]; a[p-1][q]=m; p--; } else { k=0; break; } } else if(b=='B') { if(p+1<=4&&p+1>=0) { m=a[p][q]; a[p][q]=a[p+1][q]; a[p+1][q]=m; p++; } else { k=0; break; } } else if(b=='L') { if(q-1<=4&&q-1>=0) { m=a[p][q]; a[p][q]=a[p][q-1]; a[p][q-1]=m; q--; } else { k=0; break; } } else if(b=='R') { if(q+1<=4&&q+1>=0) { m=a[p][q]; a[p][q]=a[p][q+1]; a[p][q+1]=m; q++; } else { k=0; break; } } } if(!k) { cout << "This puzzle has no final configuration." << endl << endl; continue; }else { cout << "Puzzle #" << n<< ":" << endl ; n++; for(i=0;i<5;i++)//Êä³ö { for(j=0;j<5;j++) { if(j)cout << " "; cout << a[i][j] ; } cout << endl; } cout << endl; } } return 0; }
解析:
1、注意空格的位置交换与溢出判断。
2、将每个操作定义为一次交换过程即可轻松解出。
相关文章推荐
- 第一篇博客,写在颓废之时
- bzoj:1654 [Usaco2006 Jan]The Cow Prom 奶牛舞会
- Delphi中的消息截获(六种方法)
- 从头认识java-10.6 finally(1)-特性
- Codeforces 295B Greg and Graph
- 【C语言】找带环单链表的环入口
- 黑马程序员——Java笔记——String类常用方法
- UITextFieldDelegate协议中各个方法调用情况
- Stat
- 20135321余佳源、20135323符运锦----实验二:固件设计
- Operating System-Thread(2) Multi-Process-Parallel vs Multi-Thread-Parallel
- 606第十周周六赛 H - 1sting 大数据处理
- Nodejs 0.10.x 之Url模块
- TCP长连接与短连接的区别
- Delphi下获取IE的UserAgent的方法
- matlab的符号计算
- cocos2d-x俄罗斯方块--基于简单工厂的程序重构
- Delphi使用Windows API函数AnimateWindow实现窗体特效
- C语言中三种常见排序算法分析
- jsonp跨域解决方案