求最大公约数(欧几里得算法尾递归版)+N皇后算法(位运算版)
来源:互联网 发布:网络传真怎么发 编辑:程序博客网 时间:2024/06/04 19:21
求最大公约数(欧几里得算法尾递归版)+N皇后算法(位运算版)
求最大公约数思路:沿用欧几里得算法直接出最简洁代码,数学证明重点在于gcd(a, b) = gcd(b, amodb)上。
N皇后问题思路:利用二进制位提供皇后的位置约束,主要算法为深度搜索加剪枝
主函数
转载请注明出处,原文地址为:http://blog.csdn.net/powerwoo25/article/details/47407603/* 欧几里得算法求最大公约数*/int euclid(unsigned int a, unsigned int b){ if(b == 0) { return a; } else { return euclid(b, a%b); }}
N皇后问题思路:利用二进制位提供皇后的位置约束,主要算法为深度搜索加剪枝
转载请注明出处,原文地址为:http://blog.csdn.net/powerwoo25/article/details/47407603/* N皇后算法 */int hitCount = 0, colMask = 1;/* 默认从第一行开始摆放皇后 */void DFS(int usedCol, int unAvailablePre, int unAvailableNext){ if(usedCol != colMask) { int availPos = colMask & ~(usedCol | unAvailablePre | unAvailableNext); /* 在当前行里面有一些列位置允许摆放 */ while(availPos != 0) { /* 选中最小的列 */ int tagPos = availPos & -availPos; /* 记录这个皇后摆放的列数,并且记录下一行摆放皇后时不能使用的当前摆放位置的前一列与后一列 这一部分多作说明一下,第一个参数排除掉了下一个皇后与已经摆放的皇后同排的情况,第二三个参数 排除了下一个皇后与当前已经摆放皇后同一斜线的情况 */ DFS(usedCol + tagPos, (unAvailablePre + tagPos) << 1, (unAvailableNext + tagPos) >> 1); /* 用于挑选下一个可用<span style="font-family:Microsoft YaHei;">列</span> */ availPos -= tagPos; } } else { ++hitCount; }}int NQueenProblem(int n){ colMask = (colMask << n) - 1; DFS(0, 0, 0); return hitCount;}
主函数
#include <stdio.h>int main(){// unsigned int m, n;// while(~scanf("%d %d", &m, &n))// {// printf("%d\n", euclid(m, n));// } unsigned int n; while(~scanf("%d", &n)) { printf("%d\n", NQueenProblem(n)); hitCount = 0; colMask = 1; } return 0;}
0 0
- 求最大公约数(欧几里得算法尾递归版)+N皇后算法(位运算版)
- 求最大公约数(欧几里得算法)
- 求最大公约数(欧几里得算法)
- 欧几里得算法(求最大公约数)
- 【递归经典题目】欧几里得算法求最大公约数
- 欧几里得算法求最大公约数(九度刷题)
- HDOJ 最小公倍数(欧几里得算法求最大公约数)
- 数据结构--求最大公约数(欧几里得算法)
- 一行代码求最大公约数(欧几里得算法)
- 最大公约数(欧几里得算法)
- 最大公约数(欧几里得算法)
- 最大公约数(欧几里得算法)
- 欧几里得算法求最大公约数
- 欧几里得算法求最大公约数
- 欧几里得算法 求最大公约数
- n皇后(位运算版)
- 欧几里得算法求最大公约数的递归和非递归实现
- NOJ1267 N皇后(非递归算法)
- Java基础-IO流
- GDB调试利器
- 使用epublib解析epub文件(章节内容、书籍菜单)
- git断点续传
- nagios插件之登陆SBC监控电话数
- 求最大公约数(欧几里得算法尾递归版)+N皇后算法(位运算版)
- Android数据库 之 SQLite数据库
- 近期将会暂停服务的网站一览 - 做好数据迁移的准备哦^_^
- Struts2表单回显原理,struts2表单回显
- 黑马程序员——学习日记之Java基础概述
- 电商大佬联手ERP厂商的背后故事(上个月就想写,一直没时动笔,终于:)
- 25马5赛道排名问题
- 黑马程序员——学习日记之控制语句练习
- 黑马程序员——学习日记之面向对象基础