八皇后问题一维数组解法
2012-03-27 20:12
609 查看
#include <iostream> #include <math.h> #include <malloc.h> using namespace std; int *position; //放置的位置 int queen; //皇后数目 int count; //第N种可能性 //判断第n行是否放置皇后 bool SignPoint(int n) { for (int i=0;i<n;i++) { if (position[i] == position ) //该列已经放置过皇后了 return false; if (abs(position[i] - position ) == n-i) //对角线已经放置过了 return false; } return true; } //设置皇后 void SetQueen(int n=0) { if (queen==n) { //该处可以改成自己想要的显示方式 printf("NO.%d: ",++count); printf("\n"); for (int i=0;i<queen;i++) { for (int j=0;j<queen;j++) { if (j == position[i]) { printf("* "); } else { printf("0 "); } } printf("\n"); } printf("\n"); return; } else { for (int i=0;i<queen;i++) { position = i; if(SignPoint(n))//如果该位置放置皇后正确的话,则到下一行 { SetQueen(n+1); } } } } int main(int argc, char argv[]) { cout<<"请输入皇后的总数:"<<endl; cin>>queen; position = (int*)malloc(queen*sizeof(int)); SetQueen(); cout<<"摆放完毕"<<endl; cin.get(); cin.get(); return 0; }
相关文章推荐
- N皇后问题---回溯法之一维数组存储
- 01背包问题的一维数组解法
- hdu 2553 N皇后问题(一维数组详尽解释)
- 0-1背包问题(一维数组解法)
- n皇后问题纯数组解法
- 《C++笔记》 Part7 一维数组与二维数组的初始化问题(vector)
- 【白话算法】动态规划算法什么时候能用一维数组解问题
- RMQ问题的树状数组解法
- 最大子数组问题的线性解法-wikipedia
- [Wikioi 1295]N皇后问题---两种不同的解法(复习)
- 八皇后问题解法二
- N皇后问题 位运算解法【JAVA实现】
- N皇后问题的递归与非递归解法
- K皇后问题递归解法
- [算法]经典算法8皇后(N皇后)问题的解法,C语言实现
- [笔试题 6][c/c++]一维数组初始化问题
- 最长公共子串问题的后缀数组解法
- 八皇后问题的扩展,任意数量皇后问题的较快速解法
- N皇后问题的回溯解法
- 一维数组及子数组最大和问题Java实现