数据结构---八皇后问题
2009-09-25 11:16
232 查看
算法思想:利用行号固定,列号全排列解决;这样没有i == j 和board[i] == board[j]的冲突;
只要检测(j-i) == (size_t)abs(board[i]-board[j])就说明冲突!
1 #include <cmath>
2 #include <iostream>
3 #include <vector>
4 #include <algorithm>
5
6 using namespace std;
7 const int MAX = 8;
8
9 vector<int> board(MAX);
10
11 void show_result()
12 {
13 for(size_t i = 0; i < board.size(); i++)
14 cout<<"("<<i<<","<<board[i]<<")";
15 cout<<endl;
16 }
17
18 int check_cross()
19 {
20 for(size_t i = 0; i < board.size()-1; i++)
21 {
22 for(size_t j = i+1; j < board.size(); j++)
23 {
24 if((j-i) == (size_t)abs(board[i]-board[j]))
25 return 1;
26 }
27 }
28 return 0;
29 }
30
31 void put_chess()
32 {
33 while(next_permutation(board.begin(), board.end()))
34 {
35 if(!check_cross())
36 {
37 show_result();
38 }
39 }
40 }
41
42 int main()
43 {
44 for(size_t i =0; i < board.size(); i++)
45 board[i] = i;
46 put_chess();
47 return 0;
48 }
只要检测(j-i) == (size_t)abs(board[i]-board[j])就说明冲突!
1 #include <cmath>
2 #include <iostream>
3 #include <vector>
4 #include <algorithm>
5
6 using namespace std;
7 const int MAX = 8;
8
9 vector<int> board(MAX);
10
11 void show_result()
12 {
13 for(size_t i = 0; i < board.size(); i++)
14 cout<<"("<<i<<","<<board[i]<<")";
15 cout<<endl;
16 }
17
18 int check_cross()
19 {
20 for(size_t i = 0; i < board.size()-1; i++)
21 {
22 for(size_t j = i+1; j < board.size(); j++)
23 {
24 if((j-i) == (size_t)abs(board[i]-board[j]))
25 return 1;
26 }
27 }
28 return 0;
29 }
30
31 void put_chess()
32 {
33 while(next_permutation(board.begin(), board.end()))
34 {
35 if(!check_cross())
36 {
37 show_result();
38 }
39 }
40 }
41
42 int main()
43 {
44 for(size_t i =0; i < board.size(); i++)
45 board[i] = i;
46 put_chess();
47 return 0;
48 }
相关文章推荐
- 数据结构与算法2:八皇后问题
- 数据结构与算法笔记 lesson 16 八皇后问题
- 【数据结构与算法】八皇后问题之递归
- [C++]数据结构:算法分析之八皇后问题
- 第14章 结构和其他数据形式 14.1 示例问题:创建图书目录
- 数据结构(c++)魔术师发牌问题
- 引用 Map 数据结构的排序问题
- jzoj5249 【NOIP2017提高A组模拟8.10】文本编辑器 (序列修改类问题,数据结构)
- 16、数据结构笔记之十六栈的应用之栈与递归之汉诺塔问题
- 数据结构——算法之(040)(最大公约数问题)
- 数据结构与算法问题 二叉排序树
- 数据结构基础 从01背包问题理解动态规划
- 数据结构与算法问题 二叉搜索树
- 数据结构之贪心算法(背包问题的思考)-(十)
- [算法]数据结构中关于货郎担路径问题的常用解法,边界路径问题
- 数据结构算法问题 约瑟夫问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构问题之重排链表
- 数据结构与算法问题 北大oj 2075(最小生成树)
- 数据结构与算法---约瑟夫问题