数独破解c++代码
数独破解c++代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <stack>
using namespace std; int grup_start[9][2] = {
{0,0} ,{0,3}, {0,6} ,
{3,0} ,{3,3}, {3,6} ,
{6,0} ,{6,3}, {6,6}
};
int get_grup(int x,int y)
{
return x /3 * 3 + y/3;
} bool judge(int a[][9],int i,int j,int k)
{
for(int ii = 0; ii < 9; ii++){
if(a[i][ii] == k && ii != j)
return false; if(a[ii][j] == k && i != ii)
return false;
}
int grup_int = get_grup(i,j);
for(int ii = grup_start[grup_int][0]; ii < grup_start[grup_int][0] + 3; ii++)
for(int jj = grup_start[grup_int][1]; jj < grup_start[grup_int][1] + 3; jj++){
if(a[ii][jj] == k && ii != i && j != jj)
return false;
}
return true;
}
void print(int a[][9])
{
for(int ii = 0; ii < 9; ii++){
for(int jj =0; jj < 9; jj++)
cout<<a[ii][jj];
cout<<endl;
}
} bool DFS(int a[9][9],int i,int j)
{
if(i > 8){
// cout<<endl;
print(a);
//cout<<endl;
return true;
}
else{
bool flag_tmp;
if(a[i][j] == 0)
{
int ii;
for(ii =1 ;ii <= 9; ii++){
if(judge(a,i,j,ii) == true){
a[i][j] = ii;
if(j + 1 > 8 && !(flag_tmp = DFS(a,i+1,0)) )
a[i][j] = 0; else if(j + 1 <= 8 && !(flag_tmp = DFS(a,i,j+1)) )
a[i][j] = 0;
else break;
}
}
if(!flag_tmp && ii > 9)
return false;
else return true;
}
else
{
if(j +1 > 8)
flag_tmp = DFS(a,i+1,0);
else
flag_tmp = DFS(a,i,j+1); if(!flag_tmp)
return false;
else return true;
}
}
}
int main()
{
// freopen("2.txt","w",stdout);
int n;
cin>>n;
int a[9][9];
char tmp;
while(n--){
memset(a,0,sizeof(a));
for(int i = 0; i < 9; i++)
for(int j = 0; j < 9; j ++)
{
cin>>tmp;
a[i][j] = tmp - '0';
}
//print(a);
DFS(a,0,0);
}
return 0;
}
数独破解c++代码的更多相关文章
- 数独_erlang解题代码
前几天LP玩数独,玩到大师级各种被虐,我看了看说,分分钟帮你做出来, 结果当然没有做出来. 于是上网搜了下数独的解题代码,看了下C的代码,大多是递归之类的(如http://blog.sina.com. ...
- 最简破解-java代码热加载热部署IDEA插件JRebel
如果经济实力允许的话,还是建议大家去购买收费版.支持原创作者,才能有更好的产品出现. 一.Jrebel插件介绍 JRebel一款帮助我们在开发过程中实现热加载的插件,目前来说,在IDEA中实现热加载最 ...
- 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择 ZT
最近,每个人似乎都在谈论“低代码”.以美国的Outsystems.Kinvey,以及国内的活字格为代表的低代码开发平台,正在风靡整个IT世界.毕竟,能够以最少的编码快速开发应用的想法本身就很吸引人.但 ...
- 判断9X9数组是否是数独的java代码
闲来无事,理了一下数独的判断逻辑,用java实现,代码如下 import java.util.logging.FileHandler;import java.util.logging.Level;im ...
- 动网论坛password暴力破解程序代码
<% response.buffer=false '为防止程序陷入死循环,初始化一些最大重试值 Dim MaxPassLen,MaxPassAsc MaxPassLen=20 'pass ...
- 【Android-代码破解】代码破解步骤
一.准备工具 准备要破解的apk 下载dex2jar 下载jd-gui 下载apk-tool 二.反编译apk得到Java源代码 (dex2jar是将apk中的classes.dex转化成Jar文件, ...
- MyEclipse 6.5 破解文件代码
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...
- Excel破解密码代码
Option ExplicitPublic Sub AllInternalPasswords()' Breaks worksheet and workbook structure passwords. ...
- C++ 完美破解九宫格(数独)游戏
看到CSDN上有位大神用C#写了一个破解数独的程序(点击打开链接),不过我对C#也不懂,比较喜欢C++,就用标准C++也写了一个,希望各位喜欢.三纯程序,纯控制台程序,纯各人爱好,纯算法程序,无win ...
随机推荐
- js 去掉字符串最后一个字符
var str = str.substring(0,str.length-1); alert(str); 注:length 需小写.
- sublime远程连接到linux主机
sublime远程连接到linux主机 sublime远程连接到linux主机 微信开发,直接使用sublime的sftp功能修改wx_sample.php 1.为sublime安装安装包管理插件Pa ...
- 原生化:AnDevCon 2014 McVeigh 的主题演讲
作者:Jeff McVeigh(Intel) 基于(至少部分)NDK的原生安卓应用程序占现在前1000 强的 60% 以上.该增长的原因很简单:开发商需要为用户提供超卓的体验(包括灵敏的反应.与丰富的 ...
- CKfinder中文乱码的解决.
最近在写一个类似博客的系统,使用了ckeditor和ckfinder,但是发现ckfinder在上传中文文件名的文件过程中会出现中文乱码的情况. 于是百度google乎,发现大多数的解决办法都是将文件 ...
- ecshop物料库存管理
1.创建物流库存表.sql语句: CREATE TABLE IF NOT EXISTS `emws_materials` (`id` mediumint(8) unsigned NOT NULL au ...
- bzoj 3224: Tyvj 1728 普通平衡树 替罪羊树
题目链接 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的 ...
- codeforces 519A. A and B and Chess,
A. A and B and Chess time limit per test 1 second memory limit per test 256 megabytes input standard ...
- UVA 120 Stacks of Flapjacks
每次从最底部开始处理,如果不是最大值,则把最大值翻到底部.这就是最优解.原理自己模拟一下就好... 注意半径不是从1开始.数据处理要仔细. #include <iostream> #inc ...
- 正式学习React( 三)
最基本的jsx语法什么的,我就不介绍了,唯一觉得有用点的,就是声明周期了. 下面的内容是转来的,自己也可以网上去搜,我觉得别人归纳的挺不错的,不过写法可能不是es6的,不影响学习. 在组件的整个生命周 ...
- tls和ssl
一个存在于 SSL 3.0 协议中的新漏洞于被披露,通过此漏洞,第三方可以拦截通过采用 SSL 3.0 的服务器传输的重要信息. 问题出在哪里? 与此问题相关的不是 SSL 证书本身,而是进行加密处理 ...