数独破解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++代码的更多相关文章

  1. 数独_erlang解题代码

    前几天LP玩数独,玩到大师级各种被虐,我看了看说,分分钟帮你做出来, 结果当然没有做出来. 于是上网搜了下数独的解题代码,看了下C的代码,大多是递归之类的(如http://blog.sina.com. ...

  2. 最简破解-java代码热加载热部署IDEA插件JRebel

    如果经济实力允许的话,还是建议大家去购买收费版.支持原创作者,才能有更好的产品出现. 一.Jrebel插件介绍 JRebel一款帮助我们在开发过程中实现热加载的插件,目前来说,在IDEA中实现热加载最 ...

  3. 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择 ZT

    最近,每个人似乎都在谈论“低代码”.以美国的Outsystems.Kinvey,以及国内的活字格为代表的低代码开发平台,正在风靡整个IT世界.毕竟,能够以最少的编码快速开发应用的想法本身就很吸引人.但 ...

  4. 判断9X9数组是否是数独的java代码

    闲来无事,理了一下数独的判断逻辑,用java实现,代码如下 import java.util.logging.FileHandler;import java.util.logging.Level;im ...

  5. 动网论坛password暴力破解程序代码

    <%  response.buffer=false  '为防止程序陷入死循环,初始化一些最大重试值  Dim MaxPassLen,MaxPassAsc  MaxPassLen=20 'pass ...

  6. 【Android-代码破解】代码破解步骤

    一.准备工具 准备要破解的apk 下载dex2jar 下载jd-gui 下载apk-tool 二.反编译apk得到Java源代码 (dex2jar是将apk中的classes.dex转化成Jar文件, ...

  7. MyEclipse 6.5 破解文件代码

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...

  8. Excel破解密码代码

    Option ExplicitPublic Sub AllInternalPasswords()' Breaks worksheet and workbook structure passwords. ...

  9. C++ 完美破解九宫格(数独)游戏

    看到CSDN上有位大神用C#写了一个破解数独的程序(点击打开链接),不过我对C#也不懂,比较喜欢C++,就用标准C++也写了一个,希望各位喜欢.三纯程序,纯控制台程序,纯各人爱好,纯算法程序,无win ...

随机推荐

  1. Intel 编译Boost库

    C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013 ...

  2. 《JavaScript权威指南》读书笔记2

    3.6-3.8 这三章主要介绍了JS的包装对象.不可变的原始值和可变的对象引用.JS中的类型转换. 包装对象主要指当原始值需要调用一些方法的时候(原始值本身是不能通过"."来调用的 ...

  3. windows本地搭建grunt前端项目构建环境

    初学,目前对grunt的理解和需求仅在于简单的文件合并.压缩.语法检查,其强大功能还有待研究. 安装前环境准备 (1)grunt依赖nodejs运行环境,所以要玩grunt得先把nodejs安装好,n ...

  4. phonegap安卓环境下使用BarcodeScanner插件扫描二维码教程

    由于一直在使用phoneGap来开发安卓应用,而对于原生Java小白的我最近这几天一直陷入了如何使用phonegap的BarcodeScanner插件这件事情上,可以说查遍了百度和Google,虽然只 ...

  5. Arcgis Engine 添加一个Symbol符号样式步骤

    public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...

  6. 注册表添加python

    win(python2.7)下: 执行此文件 #!/usr/bin/env python # encoding:utf-8 # # script to register Python 2.0 or l ...

  7. 看懂这个sql 你的sql语句就掌握了

    某财务报表 USE [PB_AHTC]GO/****** Object: StoredProcedure [dbo].[JSPRO] Script Date: 12/10/2013 11:54:52 ...

  8. SQL Server 控制锁升级

    背景知识: 锁升级的路线图.行--> 页 --> 区(extent)-->区(表分区)--> 表: alter table 控制锁的升级行为: 1.table SQL Serv ...

  9. Jam's math problem(思维)

    Jam's math problem Submit Status Practice HDU 5615   Description Jam has a math problem. He just lea ...

  10. JavaScript 自动生成 年月范围 选择

    近日做项目涉及到日期选择,为了用户界面友好,于是加入了一年内的年月段的查询功能,先看效果 会自动判断当前年份 以下为html代码 其中用到了 Jquery 和 struts 标签 但是这两个都不是重要 ...