数独破解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 ...
随机推荐
- (原)matlab中使用mex编译多个cpp文件
以前一直是mex一个文件.刚才需要编译多个文件(如a.cpp调用b.cpp的函数,b.cpp调用c.cpp的函数).如果只是mex a.cpp,提示函数找不到函数. 突然想到mex c.cpp b.c ...
- web.xml中<load-on-start>n</load-on-satrt>作用
如下面一段配置,我们再熟悉不过了: 我们注意到它里面包含了这段配置:<load-on-startup>1</load-on-startup>,那么这个配置有什么作用呢? 作用如 ...
- 在windows下安装mysql
本文主要讲mysql解压版在windows下的安装和配置,在官网http://www.mysql.com/下载mysql-cluster-gpl-7.3.7-winx64.zip,然后将mysql解压 ...
- 记微信开发(有道翻译api)
记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...
- Android studio checkstyle 使用
首先要安装CheckStyle-IDEA插件,官网:https://plugins.jetbrains.com/plugin/1065 打开Android studio进入设置->Plugins ...
- 解决ios双击页面上移问题
做webapp时,ios有个默认双击事件,会缩放页面,并将当前点击的位置居中到屏幕,本来也没什么,但是当页面中有fixed定位的元素时,这时候你就会神奇的发现,fixed元素所见不所得了! 还有就是页 ...
- win32 调用多媒体函数PlaySound()
必须引入此头文件 #include <mmsystem.h>#pragma comment(lib, "WINMM.LIB") /*------------------ ...
- PHP 表单防止刷新提交的方法
当然,最直接的办法就是尽量不要使用自动提交的表单,然而,当我们需要网页主动post表单进行初始化时,就不得不面对这个问题了 -------------------------------------- ...
- 如何有效地配置基于Spring的应用系统
Spring为应用系统的开发提供了极大的方便,其IoC反向注入(或DI依赖注入)的概念也彻底地改变了旧的编程方式,让我们只需关注如何使用对象,而创建对象交给Spring去完成,即把使用对象和创建对象分 ...
- linux之SQL语句简明教程---AND OR
在上一页中,我们看到 WHERE 指令可以被用来由表格中有条件地选取资料. 这个条件可能是简单的 (像上一页的例子),也可能是复杂的.复杂条件是由二或多个简单条件透过 AND 或是 OR的连接而成.一 ...