37跳棋(4)
来源:互联网 发布:win10双系统删除ubuntu 编辑:程序博客网 时间:2024/04/28 20:05
智力游戏
规则:最多跳9步,使得黑色的都在白色的左边。
步骤分解:
也可以用深度优先搜索求出合理的一个解。
代码:
#include<iostream>using namespace std;int list[7] = { 0, 1, 1, 1, 2, 2, 2 };int result[6] = { 2, 2, 2, 1, 1, 1 };int get_(){for (int i = 0; i < 7; i++)if (!list[i])return i;return 0;}void move(int n){int k = get_();list[k] = list[k + n];list[k + n] = 0;}bool dfs(int deep){if (deep == 9){for (int i = 0, j = 0; j < 6; i++, j++){if (list[i] == 0)i++;if (list[i] != result[j])return false;}cout << get_() << endl;return true;}int k = get_();for (int i = -3; i <= 3; i++){if (i == 0 || k+i>=7 || k+i<0)continue;move(i);bool flag = dfs(deep + 1);move(-i);if(flag){cout << get_() << endl;return true; }}return false;}int main(){dfs(0);return 0;}
5
2
0
3
6
5
2
4
1
0
2
0
3
6
5
2
4
1
0
最开始的空格在0处,然后移动1号格子,然后移动4号格子。。。
如果把代码中唯一出现的9改成8,可以发现,8步是无法完成的。
如果修改result,可以发现,最后空格一定是在第5号格子,否则是没法9步完成的。
2 0
- 37跳棋(4)
- (搜索)跳棋系列4
- 67跳棋(5)
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- (搜索) 跳棋系列1
- (搜索)跳棋系列3
- (搜索)跳棋系列5
- (搜索)跳棋系列6
- (搜索)跳棋系列7
- (搜索) 跳棋系列9
- 8跳棋(1)90跳棋(2)221跳棋(3)
- Chinese checkers 跳棋(广搜)
- 跳棋与Fibonacci数列(守恒思想)
- Linux下一个简单守护进程的实现 (Daemon)
- HDU 5952 搜索
- 书籍推荐
- 最小二乘法
- poj 3278(bfs宽度优先搜索)
- 37跳棋(4)
- Spark入门示例
- 3065 交叉匹配
- 总结
- 嵌入式开发课堂笔记
- java学习--数据库编程(JDBC基础概念)
- Linux编程之《只运行一个实例》以及动态获取当前程序名称
- Redis的集合类型(Set)
- 所需即所获:像IDE一样使用 vim