poj2676 Sudoku(DFS)
2024-09-16 23:12:31
做了很久还是参考了别人的答案orz,其实也不难啊。我要开始学一下怎么写搜索了。。。
题目链接:poj2676 Sudoku
题解:暴力搜索,DFS每个空白格子所放数字。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
bool row_f[][];//row_f[i][j]=1表示第i行已经放了数字j
bool col_f[][];
bool block_f[][];
int g[][];
struct blank{
int i, j;
blank(int i, int j):i(i),j(j) {}
};
vector<blank> bk;
int get_blockid(int i, int j){
i /= ;
j /= ;
return i * + j;
}
bool ok(int i, int j, int x){
return !row_f[i][x] && !col_f[j][x] && !block_f[get_blockid(i, j)][x];
}
void setnum(int i, int j, int x, int f){
row_f[i][x] = f;
col_f[j][x] = f;
block_f[get_blockid(i, j)][x] = f;
}
bool dfs(int n){//处理前n个空白格
if(n < ) return true;
int r = bk[n].i;
int c = bk[n].j;
for(int x = ; x <= ; ++x){
if(ok(r, c, x)){
setnum(r, c, x, );
g[r][c] = x;
if(dfs(n - )) return true;
setnum(r , c, x, );
}
}
return false;
}
int main(){
int t, i, j;
char c;
scanf("%d", &t);
while(t--){
bk.clear();
memset(row_f, , sizeof(row_f));
memset(col_f, , sizeof(col_f));
memset(block_f, , sizeof(block_f));
for(i = ; i < ; ++i){
for(j = ;j < ; ++j){
cin >> c;
g[i][j] = c - '';
if(!g[i][j])
bk.push_back(blank(i, j));
else
setnum(i, j, g[i][j], );
}
}
if(dfs(bk.size()-)){
for(i = ; i < ; ++i){
for(j = ; j < ; ++j)
printf("%c", g[i][j] + '');
printf("\n");
}
}
}
return ;
}
最新文章
- js整理5
- IE6 一些兼容性问题及处理方法
- javaWEB中的HttpServlet(企业开发使用)
- (07)odoo扩展API
- js获取字符串最后一个字符代码
- 洛谷 P2279 03湖南 消防局的设立
- Cmake find_package()相关
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
- winfrom中将panel另存为图片
- oracle数据库知识点
- html模板输头部出现";&;#65279";
- LeetCode(100):相同的树
- sql 删除默认索引,对象 依赖于 列,由于一个或多个对象访问此列
- Python基础【day01】:Hello World程序(二)
- 雷林鹏分享:jQuery EasyUI 表单 - 表单验证
- Python之路PythonNet,第一篇,网络1
- 网络爬虫2:使用crawler4j爬取网络内容
- Python(三)之Python的表达式和语句概述
- Ubuntu 安装IntelliJ IDEA
- linux源码编译安装php出现 cannot find -lltdl
热门文章
- 观摩制作小游戏(js应用)
- C# WPF &ndash; 利用&ldquo;Attached Property&rdquo; 把 RoutedEvent 接上 ICommand
- java传递和返回对象
- [Java解惑]应用
- Simulating a Fetch robot in Gazebo
- 自定义CSS博客(转)
- javascript练习----复选框全选,全不选,反选
- iOS - Swift Closure		闭包
- 强大!基于拖放布局的 Twitter Bootstrap 网站生成器
- 一些比较好的shellscript脚本