数独破解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 ...
随机推荐
- Intel 编译Boost库
C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013 ...
- 《JavaScript权威指南》读书笔记2
3.6-3.8 这三章主要介绍了JS的包装对象.不可变的原始值和可变的对象引用.JS中的类型转换. 包装对象主要指当原始值需要调用一些方法的时候(原始值本身是不能通过"."来调用的 ...
- windows本地搭建grunt前端项目构建环境
初学,目前对grunt的理解和需求仅在于简单的文件合并.压缩.语法检查,其强大功能还有待研究. 安装前环境准备 (1)grunt依赖nodejs运行环境,所以要玩grunt得先把nodejs安装好,n ...
- phonegap安卓环境下使用BarcodeScanner插件扫描二维码教程
由于一直在使用phoneGap来开发安卓应用,而对于原生Java小白的我最近这几天一直陷入了如何使用phonegap的BarcodeScanner插件这件事情上,可以说查遍了百度和Google,虽然只 ...
- Arcgis Engine 添加一个Symbol符号样式步骤
public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...
- 注册表添加python
win(python2.7)下: 执行此文件 #!/usr/bin/env python # encoding:utf-8 # # script to register Python 2.0 or l ...
- 看懂这个sql 你的sql语句就掌握了
某财务报表 USE [PB_AHTC]GO/****** Object: StoredProcedure [dbo].[JSPRO] Script Date: 12/10/2013 11:54:52 ...
- SQL Server 控制锁升级
背景知识: 锁升级的路线图.行--> 页 --> 区(extent)-->区(表分区)--> 表: alter table 控制锁的升级行为: 1.table SQL Serv ...
- Jam's math problem(思维)
Jam's math problem Submit Status Practice HDU 5615 Description Jam has a math problem. He just lea ...
- JavaScript 自动生成 年月范围 选择
近日做项目涉及到日期选择,为了用户界面友好,于是加入了一年内的年月段的查询功能,先看效果 会自动判断当前年份 以下为html代码 其中用到了 Jquery 和 struts 标签 但是这两个都不是重要 ...