C语言实现各大皇后问题
2014-08-20 11:11
204 查看
#include <iostream>
using namespace std;
//皇后问题求解方案
#define Max 9
int a[Max]={0};
int f=0;
void put(int k,int n)
{
int i=0,j=0,u=0;
if(k<=n)
{
for(i=1;i<=n;++i)
{
a[k] = i;
for (j=1;j<=k-1;j++) //探索已经填充号的皇后位置
{
if(a[k]==a[j] || abs(a[k]-a[j])==k-j) //判断这个皇后是否与之前的皇后在一列,或者对角线上
{
u=1;
break;
}
else
{
u=0;
}
}
if(u==0)
{
if(k==n)
{
f++;
for (j=1;j<=n;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
else
{
put(k+1,n);
}
}
}
}
}
void main()
{
put(1,Max-1);
printf("sum is %d\n",f);
}
using namespace std;
//皇后问题求解方案
#define Max 9
int a[Max]={0};
int f=0;
void put(int k,int n)
{
int i=0,j=0,u=0;
if(k<=n)
{
for(i=1;i<=n;++i)
{
a[k] = i;
for (j=1;j<=k-1;j++) //探索已经填充号的皇后位置
{
if(a[k]==a[j] || abs(a[k]-a[j])==k-j) //判断这个皇后是否与之前的皇后在一列,或者对角线上
{
u=1;
break;
}
else
{
u=0;
}
}
if(u==0)
{
if(k==n)
{
f++;
for (j=1;j<=n;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
else
{
put(k+1,n);
}
}
}
}
}
void main()
{
put(1,Max-1);
printf("sum is %d\n",f);
}
相关文章推荐
- n皇后问题的两种递归方法C语言实现
- C语言实现N皇后问题源代码
- 八皇后问题,C语言实现,求出第一行第一列有皇后的解
- N 皇后问题C语言实现
- [算法]经典算法8皇后(N皇后)问题的解法,C语言实现
- 8皇后问题的c++与python实现对比
- C语言算法实现迷宫问题2
- 递归求解N皇后问题(c语言)
- C++实现 八皇后问题及其扩展N皇后问题(经典回溯算法)
- 括号匹配问题 栈的应用 C语言实现
- 递归实现回溯法求n皇后问题
- n皇后问题(人工智能试验java实现)
- c语言的一结构数据的堆栈实现问题
- 回溯法求解 “n 皇后 问题”——Java 实现
- 一次C语言实现字符排序出现的问题
- 8皇后问题(java算法实现)
- 用c++实现的8皇后问题
- C语言编程 N皇后问题求解
- 一球从100m高度自由落下问题(C语言实现)
- 【转】用c++实现的8皇后问题