`
美丽的小岛
  • 浏览: 297248 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

位运算求解N皇后的过程

 
阅读更多

 8皇后可以用位运算来求,有点好奇的,不过,位运算这个强大的逻辑,没有怀疑,用了n为4的,对于太大的控制台放不下。 

#include<stdio.h>
#define N 4
int result = 0 ;
int count = 1 ;
int upperlim = (1 << N) -1 ;
void com(int row,int ld, int rd) ;
void print_bin(int n);
int main(){
    com(0,0,0) ;
   printf("结果为:%d",result) ;
    return 0 ;
}

void com(int row ,int ld , int rd){
    int pos,p ;
    printf("count = %d \nrow = ",count++) ;
    print_bin(row) ;
    printf(" ") ;
    printf("ld = ") ;
    print_bin(ld) ;
    printf(" ") ;
    printf("rd = ") ;
    print_bin(rd) ;
    printf("\n") ;
    if(row != upperlim){
        pos = upperlim & ~(row | ld | rd) ;
        printf("pos = ") ;
        print_bin(pos) ;
        printf("\n") ;
        while( pos != 0 ){
            p = pos & ( - pos ) ;
            pos = pos - p ;
            com(row + p, (ld + p) << 1 , (rd + p) >> 1) ;
        }
        printf("回溯\n") ;
    }else{
       result++ ;
       printf("第%d个解产生\n",result) ;
    }
}

void print_bin(int n){
   if(n < 2 ){printf("%d",n);}
    else{
        print_bin(n/2) ;
        printf("%d",n%2) ;
    }
}

 输出结果:

 
其实,想作一个图出看看效果,时间有限。
 

参考:http://www.matrix67.com/blog/archives/266

  • 大小: 14 KB
  • 大小: 4.8 KB
1
2
分享到:
评论

相关推荐

    N皇后问题(位运算,C语言版)

    N皇后问题(位运算,C语言版) N皇后问题求解 位运算

    n皇后\大数运算\二叉树等 北大工硕期末题

    2、 编程求解皇后问题。在m*m的棋盘上有n个皇后(n ≤ m),输出所有合法的皇后排列(即在任何一行、一列或一条对角在线,仅能放置一个皇后)。 3、 实现图书馆借书系统,其功能包括: (1) 申请新的图书证; (2...

    N-Queens:多机并行求解器的N皇后问题

    8 皇后问题在单机上的运算时间是毫秒级,有 92 个解,编程实现之(**注意:目前世界纪录是 N = 26, 研究 N-皇后问题的并行算法,写一个单机多线程程序,争取达到线性加速比(以 CPU 核数计)。再设法将算法扩展到多...

    leetcode11-leetcode:leetcode实现源代码

    leetcode11 top 1. 位运算 LeetCode191 : 二进制位1的个数 LeetCode338 : 比特位运算 2. 字典树 LeetCode209 : 实现一个Trie结构 ...N皇后问题 LeetCode37 : 求解数独问题 5. 递归回溯 LeetCode22 : 括号生成

    算法面试通关手写代码40讲 .txt

    面试题:N皇后问题的另一种解法.mp4 41 .面试题:2的幂次方问题&比特位计数问题.mp4 40.面试题:统计位1的个数.mp4 39.理论讲解:位运算.mp4 38.面试题:二维网格中的单词搜索问题.mp4 37.面试题:实现一个字典树....

    C语言学习实例220例

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的尾数 077 ...

    C语言实例解析精粹

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    200个经典C程序【源码】

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    C/C++常用算法手册.秦姣华(有详细书签).rar

    10.9.2 八皇后问题求解 325 10.10 寻找假银币 327 10.10.1 寻找假银币算法 327 10.10.2 寻找假银币求解 329 10.11 青蛙过河 331 10.11.1 青蛙过河算法 331 10.11.2 青蛙过河求解 333 10.12 三色旗 335 ...

    《妙趣横生的算法(C语言实现)》(杨峰 编著)

    4.9 巧用位运算 4.10 文件的读写 4.11 计算文件的大小 4.12 记录程序的运行时间 4.13 十进制/二进制转化器 4.14 打印特殊图案 4.15 打印杨辉三角 4.16 复杂级数的前n项和 4.17 寻找矩阵中的“鞍点” 4.18 n阶勒让德...

    220个C语言程序源代码.zip

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    200个C程序.rar

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    220个经典C程序源码文件,可以做为你的学习设计参考.zip

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    200个经典C程序源码(包括基础篇+数据结构篇+数值计算与趣味数学篇+图形篇+系统篇+常见试题解答篇).zip

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    220个C语言程序源代码集合.zip

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    C语言经典源代码实例 数据结构 操作系统 图形等

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    C语言源代码实例.rar

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    经典的C程序220案列

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    关于C的精粹包含至少200个C语言小程序

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

    C语言220例从易到难源代码

    068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的...

Global site tag (gtag.js) - Google Analytics