【位运算DFS/DLX】【HDU1426】【数独】
题意:标准的一道数独题
DFS做法:
将横纵九宫格里的数字用位运算状态压缩,且可以通过逻辑或来确定总共有哪些数字被选择了,很方便也很快,代码如下
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
char MAP[30][30];
int ANS[30][30];
int x[30],y[30],z[30];
int nx[30]={0,1,1,1,4,4,4,7,7,7};
int ny[30]={0,1,4,7,1,4,7,1,4,7};
int nn[20][20];
void init()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
}
void input()
{
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
memset(ANS,0,sizeof(ANS));
for(int i=2;i<=9;i++)
gets(MAP[i]);
gets(MAP[10]);
for(int i=1;i<=9;i++)
for(int j=0;j<=16;j=j+2)
if(MAP[i][j]!='?') x[i]=(x[i]|(1<<MAP[i][j]-'0')),ANS[i][((j/2)+1)]=MAP[i][j]-'0',
y[((j/2)+1)]=(y[((j/2)+1)]|(1<<(MAP[i][j]-'0')));
for(int k=1;k<=9;k++)
for(int i=nx[k];i<=nx[k]+2;i++)
for(int j=ny[k];j<=ny[k]+2;j++)
{
if(MAP[i][((j-1)*2)]!='?') z[k]=(z[k]|(1<<(MAP[i][((j-1)*2)]-'0')));
nn[i][j]=k;
}
}
int dfs(int X,int Y)
{
int XX=X,YY=Y;
if(YY+1<=9) YY++;
else XX++,YY=1;
if(X==10) return 1;
else
{
if(ANS[X][Y]!=0) {if(dfs(XX,YY)) return 1;}
else
{
int xxx=x[X],yyy=y[Y],zzz=z[nn[X][Y]];
int t=x[X]|y[Y]|z[nn[X][Y]];
for(int i=1;i<=9;i++)
{
if((1&(t>>i))==0)
{
ANS[X][Y]=i;x[X]=(x[X]|(1<<i));y[Y]=(y[Y]|(1<<i));z[nn[X][Y]]=(z[nn[X][Y]]|(1<<i));
if(dfs(XX,YY)) return 1;
ANS[X][Y]=0;x[X]=xxx;y[Y]=yyy;z[nn[X][Y]]=zzz;
}
}
}
}
return 0;
}
void solve()
{
dfs(1,1);
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
printf("%d",ANS[i][j]);
if(j!=9) printf(" ");
}
printf("\n");
}
}
int main()
{
// init();
int Case=0;
while(gets(MAP[1]))
{
if(Case++) printf("\n");
input();
solve();
}
}
DLX 做法待研究
【位运算DFS/DLX】【HDU1426】【数独】的更多相关文章
- ACM学习历程—HDU5269 ZYB loves Xor I(位运算 && dfs && 排序)(BestCoder Round #44 1002题)
Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he ...
- UVA 690 PipelineScheduling 位运算+dfs+剪枝
一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化. 预处理:预判一下并保存下一个可以放的位置距离之前的距离.这样可以减少很多判断. 最优化剪枝:如果当前长度+剩下没放的程序*最短间隔如果大于 ...
- 牛客编程巅峰赛S2第10场 - 钻石&王者 C.牛牛的路径和 (位运算,dfs)
题意:给你节点数为\(n\)的树,每个节点都有自己的权值,求所有路径的上的点的权值按位与的和. 题解:题目给的数据很大,我们不能直接去找.因此我们可以枚举二进制\([1,20]\)的每一位,然后再枚举 ...
- 洛谷 1219:八皇后 (位运算 & DFS)
题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...
- 数独求解问题(DFS+位运算优化)
In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...
- UVa 818Cutting Chains (暴力dfs+位运算+二进制法)
题意:有 n 个圆环,其中有一些已经扣在一起了,现在要打开尽量少的环,使所有的环可以组成一条链. 析:刚开始看的时候,确实是不会啊....现在有点思路,但是还是差一点,方法也不够好,最后还是参考了网上 ...
- 【位运算经典应用】 N皇后问题
说到位运算的经典应用,不得不说N皇后问题. 学过程序设计的都知道N皇后问题,没听过也没关系.很简单,最传统的的N皇后问题是这个样子的,给你一个n * n大小的board,让你放n个皇后(国际象棋),要 ...
- leetcode - 位运算题目汇总(上)
最近在看位运算的知识,十分感叹于位运算的博大精深,正好leetcode有 Bit Manipulation 的专题,正好拿来练练手. Subsets 给出一个由不同的数字组成的数组,枚举它的子数组(子 ...
- N皇后问题(位运算实现)
本文参考Matrix67的位运算相关的博文. 顺道列出Matrix67的位运算及其使用技巧 (一) (二) (三) (四),很不错的文章,非常值得一看. 主要就其中的N皇后问题,给出C++位运算实现版 ...
随机推荐
- 【MSP是什么】MSP认证之项目管理与项目群管理的区别
通常所说的项目管理是指运用各种相关知识.技能.方法与工具,为满足或超越项目有关各方对项目的要求与期望,所开展的各种计划.组织.领导.控制等方面的活动.具体包括项目范围管理.项目时间管理.项目成本管理. ...
- HDU 4978 A simple probability problem
A simple probability problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- 通过ant脚本编译打包android工程
通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式: 方式一:命令行手动编译打包 方式二:使用ant自动编译打包 方式三:使用eclipse+AD ...
- Kolor Neutralhazer v1.0.2 (照片雾气模糊去除过滤器)+破解RI
由于空气污染.阴霾几天越来越,根据照片始终是一个灰色,怎么做?有了这个插件.能够解除您的烦恼. Neutralhazer这是消除你的风景照片和雾气模糊的全景图的有效途径photoshop小工具. wa ...
- yum 安装软件提示错误
试用yum命令装软件时,遇到了下面的问题,错误提示: rpmdb: unable to join the environment error: db4 error(11) from dbenv-> ...
- Android app去应用市场评分功能
因为android市场很多,去各个应用市场评分的功能却不是很难实现. private void gotoRate(){ Uri uri = Uri.parse("market://detai ...
- null值的判断
select * from Students where Address IS null --判断address是nulselect * from Students where Address is ...
- hdu2309ICPC Score Totalizer Software
Problem Description The International Clown and Pierrot Competition (ICPC), is one of the most disti ...
- js压缩解压工具
参看下面链接:http://js.clicki.cc/
- java poi 导入excel
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包 http://pan.baidu.com/s/1sjPuWDR pack ...