数独
来源:互联网 发布:400÷1.25的简便算法 编辑:程序博客网 时间:2024/05/01 21:48
免费的在线数独
http://cn.sudokupuzzle.org/
样例输入
9 0 7 0 0 0 0 0 0
0 0 0 0 0 0 8 0 0
0 0 0 0 0 6 5 0 2
1 0 0 0 0 0 0 7 0
0 0 0 0 5 0 0 0 0
3 0 0 9 0 2 0 0 0
0 2 0 0 8 0 0 0 0
0 0 0 3 0 0 0 4 0
0 0 5 0 0 0 0 0 0
样例输出
9 8 7 2 1 5 4 6 3
5 6 2 4 9 3 8 1 7
4 1 3 8 7 6 5 9 2
1 5 9 6 3 8 2 7 4
2 4 6 7 5 1 3 8 9
3 7 8 9 4 2 1 5 6
6 2 4 5 8 9 7 3 1
8 9 1 3 2 7 6 4 5
7 3 5 1 6 4 9 2 8
代码
#include<stdio.h>#include<algorithm>#define INF 0X3F3F3F3F#define up(i,a,b) for(int i=(a);i<=(b);i++)using namespace std;int MAP[10][10];int CNT[10][10];bool r[10][10];bool c[10][10];bool g[10][10];int rk[100];int id(int R,int C){ return (R-1)*9+C;}int gid(int R,int C){ int rr=(R-1)/3+1; int cc=(C-1)/3+1; return (rr-1)*3+cc;}void jc(int R,int C){ int cnt=0; up(i,1,9) if(r[R][i]||c[C][i]||g[gid(R,C)][i]) cnt++; if(MAP[R][C]) CNT[R][C]=INF; else CNT[R][C]=9-cnt;}void gx(int R,int C,int V,bool x){ int ID=gid(R,C); if(x) { MAP[R][C]=V; r[R][V]=true; c[C][V]=true; g[ID][V]=true; } else { MAP[R][C]=0; r[R][V]=false; c[C][V]=false; g[ID][V]=false; } up(i,1,9) { jc(i,C); jc(R,i); } R=(ID-1)/3*3+1; C=(ID-1)%3*3+1; up(i,0,2) up(j,0,2) jc(R+i,C+j);}bool cmp(int i,int j){ int r1=(i-1)/9+1; int r2=(j-1)/9+1; int c1=(i-1)%9+1; int c2=(j-1)%9+1; return CNT[r1][c1]<CNT[r2][c2];}bool dfs(){ sort(rk+1,rk+82,cmp); int ID=rk[1]; int R=(ID-1)/9+1; int C=(ID-1)%9+1; if(CNT[R][C]==INF) return true; if(CNT[R][C]==0) return false; up(i,1,9) { if(r[R][i]||c[C][i]||g[gid(R,C)][i]) continue; gx(R,C,i,1); if(dfs()) return true; gx(R,C,i,0); } return false;}void print(){ puts(""); up(i,1,9) { up(j,1,9) printf("%d ",MAP[i][j]); puts(""); } puts("");}int main(){ int temp; up(i,1,9) up(j,1,9) CNT[i][j]=9; up(i,1,9) up(j,1,9) {scanf("%d",&temp);gx(i,j,temp,1);} up(i,0,99) rk[i]=i; if(dfs()) print(); else printf("no\n"); return 0;}
0 0
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- 数独
- java泛型T.class的获取
- Categories
- 安装用于深度学习的CUDA环境
- MQTT(使用mosquitto做broker)做Android推送部分总结
- LeetCode[378] Kth Smallest Element in a Sorted Matrix
- 数独
- 什么是SaaS、PaaS和IaaS?
- 网络访问请求之Httpget请求
- 同步助手64位 v3.2.7.2 官方最新版
- Android 缓存浅谈(一) LruCache
- OC中的属性和成员变量在.h文件和.m文件的不同
- 异常:Project configuration is not up-to-date with pom.xml解决方案
- Opencv中颜色通道分离、混合的split和merge
- hdu5807 dp