Sudoku(数独缩小版(4*4))
来源:互联网 发布:js array set 去重 编辑:程序博客网 时间:2024/05/16 12:00
题目来源:https://vjudge.net/problem/HDU-5547
【题意】
在含*字符处填入数字,符合数独要求。
【思路】
模板题。dfs+暴力枚举
【代码】
#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];bool legal(int x, int y,int v){ for(int i = 0; i < 4; i++) { if(i != x && a[i][y] == v)//同一行 return 0; if(i != y && a[x][i] == v)//同一列 return 0; } int xx = x/2*2; int yy = y/2*2; for(int i = xx; i <xx+2; i++)//同一块 for(int j = yy; j <yy+2; j++) if(i != x && j != y && a[i][j] == v) return 0; return 1;}void dfs(int k,int &t){ if(k == 16)//若是没有flag标记已找到的话,很容易超时。但是不标记也过了。 { printf("Case #%d:\n",t++); for(int i=0; i<4; i++) { for(int j=0; j<4; j++) printf("%d",a[i][j]); printf("\n"); } return; } int x = k/4; int y = k%4; if(a[x][y] ==0) { for(int i = 1; i <= 4; i++) { a[x][y] =i; if(legal(x, y, a[x][y])) dfs(k+1,t); } a[x][y] = 0; } else dfs(k+1,t);}int main(){ int T,t=1; scanf("%d",&T); while(T--) { char str[10]; for(int i = 0; i < 4; i ++) { scanf("%s",str); for(int j = 0; j < 4; j++) a[i][j]=str[j]=='*'?0:str[j]-'0'; } dfs(0,t); }}
0 0
- Sudoku(数独缩小版(4*4))
- 数独(SuDoku)介绍
- poj2676(数独 sudoku)
- POJ2676-Sudoku(数独)
- 数独(Sudoku)求解程序
- hdu 3111 Sudoku(DFS数独)
- POJ 2676 Sudoku (数独 搜索)
- Sudoku 数独 (Dancing links)
- POJ 2676Sudoku(数独)
- poj 2676 Sudoku(数独)
- 华为OJ(数独游戏-Sudoku)
- 36. Valid Sudoku (判断数独)
- (POJ2676)Sudoku <简单数独问题>
- POJ 2676-Sudoku(DFS-数独)
- 【POJ 2676】Sudoku数独(DFS)
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- LeetCode 37 Sudoku Solver(求解数独)(*)
- 闲人真多啊:Sudoku(数独?)的XQuery解决方案
- Java学习之character类
- ActiveMQ使用步骤
- Eclipse利用命令行启动代理快速安装插件
- spring(七)---基于mysql数据库的三种连接池的配置
- 叠筐
- Sudoku(数独缩小版(4*4))
- H.323 Plus voip
- 12222
- python从子线程中获得返回值
- Python thread 多线程
- Hibernate映射数据库关系
- Sql之left join(左关联)、right join(右关联)、inner join(自关联)的区别
- 基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制(上篇)
- docker 命令的笔记