简易数独(9*9)
来源:互联网 发布:仓储淘宝王一样的小说 编辑:程序博客网 时间:2024/05/18 00:20
题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=722
【题意】
数独游戏,含0的位置被填入1~9的数字之后,使得每一行每一列的数字都不一样。
【思路】
模板,不过在找到确定值之后,就要一直return,不然会超时。
【代码】
#include<map>#include<stack>#include<queue>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<iostream>#include<string>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long LL;int a[9][9];int flag;bool check(int x,int y){ for(int i=0; i<9; i++) if(i!=x&&a[i][y]==a[x][y]||i!=y&&a[x][i]==a[x][y]) return 0; int fx=x/3*3; int fy=y/3*3; for(int i=fx; i<fx+3; i++) { for(int j=fy; j<fy+3; j++) { if(i!=x&&j!=y&&a[i][j]==a[x][y]) return 0; } } return 1;}void dfs(int k){ if(k==81) { for(int i=0; i<9; i++) { printf("%d",a[i][0]); for(int j=1; j<9; j++) { printf(" %d",a[i][j]); } printf("\n"); } flag=1;//标记已找到。 return ; } int x=k/9; int y=k%9; if(!a[x][y]) { for(int i=1; i<=9; i++) { a[x][y]=i; if(check(x,y)) dfs(k+1); if(flag) return; a[x][y]=0; } } else { dfs(k+1); if(flag) return; }}int main(){ int T; scanf("%d",&T); while(T--) { for(int i=0; i<9; i++) { for(int j=0; j<9; j++) { scanf("%d",&a[i][j]); } } flag=0; dfs(0); }}
0 0
- 简易数独(9*9)
- 9 * 9 数独游戏小程序 (DFS)
- poj3074Sudoku(DLX解9*9数独)
- 数独 JAVA(9以内都可用)
- 数独(转)
- 数独(P2676)
- checkio (数独)
- 数独(DFS)
- 数独(回溯)
- 数独 (搜索)
- 数独(DFS)
- poj3074 9*9数独,poj3076 16*16数独 DLX
- 数独(SuDoku)介绍
- 数独游戏(完整版)
- poj2676(数独 sudoku)
- 数独求解(回溯)
- 数独求解(深搜)
- POJ2676-Sudoku(数独)
- AngularJs的UI组件ui-Bootstrap——Datepicker Popup
- Axure制作二级列表
- 前端必学-----AJax--笔记---03
- vue 路由vue-router
- css盒子模型之内边距(padding)
- 简易数独(9*9)
- tensorflow学习路线
- 八大排序(完)
- 博客中曾经分享的视频链接
- 前端数据模拟---mock.js 使用教程
- 【PHP-漏洞之一】跨网站请求伪造
- .NET开发中遇到的一些问题汇总
- unity NetWorking小案例
- spring boot+dubbo