面向对象思想中的八皇后问题
来源:互联网 发布:计算器java程序代码 编辑:程序博客网 时间:2024/05/01 19:12
一直都是用深搜求八皇后问题,昨天面向对象老师讲了一下用面向对象思想来写,感到质疑,回来写了一下,感觉恶心。
这是人类的思想吗?
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<cmath>#include<string>using namespace std;#define N 8class Queen{const int col;int row;bool testAttack(int testrow, int testcol){if(testrow == row)return true;if(abs(testrow-row) == abs(testcol - col))return true;return false;}public:Queen(int c, int r, Queen *n):col(c), row(r), neighbor(n){};void show(){printf("row = %d col = %d\n", row, col);if(neighbor) neighbor->show();}Queen *neighbor;bool findsolution();bool canAttack(int , int);bool advance();};bool Queen::findsolution(){while(neighbor && neighbor->canAttack(row, col)){if(!advance()) return false;}return true;}bool Queen::advance(){while(row < N){row ++;return findsolution();}if(neighbor && !neighbor->advance())return false;if(row == N && col == 1)return false;row = 1;return findsolution();}bool Queen::canAttack(int testrow, int testcol){if(testAttack(testrow, testcol))return true;return neighbor && neighbor->canAttack(testrow, testcol);}int main(){Queen *lastqueen = 0;for(int i = 1; i <= N; i++){lastqueen = new Queen(i, 1, lastqueen);if(!lastqueen->findsolution())printf("nosolution\n");else if(i == N){lastqueen->show();while(lastqueen->advance())lastqueen->show();}}return 0;}
0 0
- 面向对象思想中的八皇后问题
- c# 解决面向对象八皇后问题的实例
- 局部搜索思想求解八皇后问题
- Java中的面向对象思想
- 八皇后问题(减支思想、全列举)
- 八皇后问题(用了寄存器的思想)
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- C语言中的面向对象思想
- OC中的面向对象编程思想<一>
- VS2010 MFC窗体的大小设置
- 静态方和和实例方法的区别
- 贡献一些C语言学习必备的书籍
- java中对应javascript的escape和unescape的工具
- linux下搭建ghost 4.2
- 面向对象思想中的八皇后问题
- ubuntu怎么设置root用户
- Oracle 10g 控制台登录 出现Io 异常:Unknown host specified
- 2、 DirectX
- Nagios监控HP-UX
- Swing 组件概述 java
- 获取手机设备信息 总汇
- Linux服务器测试网速
- 麦当劳理论