皇后问题的一个解法

转载 2006年05月20日 21:56:00

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

long sum=0,upperlim=1;

void test(long row, long ld, long rd){

if (row != upperlim){
long pos = upperlim & ~(row | ld | rd);
while (pos){
long p = pos& -pos;
pos -= p;
test(row+p, (ld+p)<<1, (rd+p)>>1);
}}
else
sum++;
}

int main(int argc, char *argv[])
{
time_t tm;
int n=8;

if(argc!=1)n=atoi(argv[1]);
tm=time(0);
if((n<1)||(n>32)){
printf(" 只能计算1-32之间/n");
exit(-1);}
printf("%d 皇后/n",n);
upperlim=(upperlim<<n)-1;

test(0,0,0);
printf("共有%ld种排列, 计算时间%d秒 /n", sum,(int)(time(0)-tm));
}


10 皇后
共有724种排列, 计算时间0秒

11 皇后
共有2680种排列, 计算时间0秒

12 皇后
共有14200种排列, 计算时间0秒

13 皇后
共有73712种排列, 计算时间0秒

14 皇后
共有365596种排列, 计算时间1秒

15 皇后
共有2279184种排列, 计算时间5秒


16 皇后
共有14772512种排列, 计算时间30秒

17 皇后
共有95815104种排列, 计算时间224秒

N皇后问题最简单解法

Description 编写一个函数,求解皇后问题:在n*n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。要求:1、皇后的个数由用户输入,其值不能超过20,输出所有的解。2...
  • ak644928128
  • ak644928128
  • 2017年04月25日 21:40
  • 343

八皇后问题的分析与解法

问题描述: 在8*8的国际象棋棋盘上,要求在每一行(或者每一列)放置一个皇后,且能做到在水平方向、竖直方向和斜方向都没有冲突。请列出所有解法。 根据上述描述,我们可以得到如果两个皇后Q1(x...
  • friendbkf
  • friendbkf
  • 2015年11月17日 19:38
  • 1449

用matlab处理4/8/n皇后问题

国际象棋中的皇后可以沿着水平线,垂直线,或者斜线前进,吃掉遇到的所有棋子。如果棋盘上的每个皇后都相安无事既不被其他皇后吃掉。 (1)如果棋盘上有4个皇后,则使这4个皇后如何相安无事的方法有几种。并打...
  • YiMo_Fan
  • YiMo_Fan
  • 2017年04月27日 15:30
  • 501

n皇后问题的三种解法

N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。 n皇后问题不算是陈词滥调,也是老生常谈了,作为回溯的经典案例...
  • computerme
  • computerme
  • 2014年01月10日 12:57
  • 2637

皇后问题最快的解法(C语言)八皇后、十六皇后时间在毫秒级

//皇后问题最快的解法(C语言)八皇后、十六皇后时间在毫秒级 #include # include # include # include #define O 134775813 // TODO ...
  • bob601450868
  • bob601450868
  • 2013年10月19日 23:41
  • 1313

[算法学习]8皇后问题

问题描述: 国际象棋的“8皇后问题”:在8x8的国际象棋上摆放8个皇后,使其不能互相攻击,即8个皇后中任意两个不得处在同一行、同一列或同一对角线上。共有多少种符合条件的摆法? 解法与分析: ...
  • KesarChen
  • KesarChen
  • 2016年02月19日 15:21
  • 7650

8皇后问题的两种解法

C++代码: 解法一:#include #include using namespace std;bool check(const vector &v, int k) { for (in...
  • u011954296
  • u011954296
  • 2016年05月04日 17:21
  • 1049

八皇后问题递归解法

八皇后问题
  • u012842664
  • u012842664
  • 2015年08月02日 18:25
  • 3484

算法学习:回溯解决4皇后问题

回溯解4皇后问题说实话,到现在对于写代码我还是心里挺害怕的,总觉得自己不行。。。但是我也要坚持下去,没准儿以后就行了呢,哈哈 今天晚上在图书馆复习回溯,老师课件上面第一个就是4皇后问题,我就想...
  • zkyrjsxdm
  • zkyrjsxdm
  • 2015年12月18日 23:29
  • 856

八皇后问题详解(四种解法)

如果你去百度百科八皇后这个问题,你会发现人家也是历史上有头有脸的一个问题,最后一句“计算机发明后就有一万种方式解决这个问题”读起来也让程序猿们很快活。闲话少说,开始阐述我的思路:最无脑的解法一定是八个...
  • codes_first
  • codes_first
  • 2017年11月08日 01:38
  • 256
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:皇后问题的一个解法
举报原因:
原因补充:

(最多只允许输入30个字)