uva11195(回溯+位运算)
来源:互联网 发布:淘宝上怎样找高仿耐克 编辑:程序博客网 时间:2024/06/07 00:03
题意:
八皇后;
*的位置不能放;
思路:
直接回溯会超时,
所以用位运算;
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 20;int INF;int n, sum;char g[N][N];int s[N];int dfs(int cur, int d, int lu, int ru) {int res = 0;if(cur == n) {return 1;}int p = ~(s[cur] | d | lu | ru);int sta = p & (-p) & INF;while(sta) {res += dfs(cur + 1, d|sta , (sta|lu) << 1 ,(sta|ru) >> 1);p ^= sta;sta = p & (-p) & INF;}return res;}int main() {int cas = 1;while(scanf("%d",&n) && n) {INF = (1 << n) - 1;memset(s, 0, sizeof(s));for(int i = 0; i < n; i++) {scanf("%s",g[i]);for(int j = 0; j < n; j++) {if(g[i][j] == '*')s[i] |= (1 << j);}}printf("Case %d: %d\n",cas++, dfs(0, 0, 0, 0));}}
0 0
- uva11195(回溯+位运算)
- N皇后-回溯-位运算解法
- POJ 2965-The Pilots Brothers' refrigerator(位运算+BFS+回溯路径)
- HDOJ 2553 皇后问题(1、回溯法 2、位运算)
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- LeetCode之Insert Interval
- poj 2104 && 2761 Feed the dogs(划分树)
- Java调用Memcache入门
- 安装percona-toolkit-2.2.1.tar.gz
- python基础知识(1)——列表和元组
- uva11195(回溯+位运算)
- 【机器学习基础】验证
- iOS-iOS文件系统基础
- spoj 694 Distinct Substrings (后缀数组应用)
- percona工具使用一 pt-table-sync
- win7开启热点时“无法启动承载网络”的解决方法
- return换行也有错?javascript中return的设计缺陷
- 非递归地中序遍历BST
- [线段树] HDU 1166 - 敌兵布阵