#include<iostream>
using namespace std; bool heng(int **sudo, int a, int b, int value)
{
bool flag = true;
for(int i=0; i<9; i++)
{
if(sudo[a][i]==value)
{
flag = false;
}
}
return flag;
} bool shu(int **sudo, int a, int b, int value)
{
bool flag = true;
for(int i=0; i<9; i++)
{
if(sudo[i][b]==value)
{
flag = false;
}
}
return flag;
} bool fang(int **sudo, int a, int b, int value)
{
bool flag = true;
int x = a/3*3;
int y = b/3*3; for(int i = 0; i<3; i++)
{
for(int j=0; j<3; j++)
{
if(sudo[x+i][y+j]==value)
{
flag = false;
}
}
}
return flag;
} void dfs(int a, int b, int **sudo, bool &flag)
{
if(a==9 && b==0)
{
for(int i=0; i<9; i++)
{
for(int j=0; j<8; j++)
{
cout<<sudo[i][j]<<' ';
}
cout<<sudo[i][8]<<endl;
}
flag = false;//find
return;
}
else
{
if(flag)
{
if(sudo[a][b]==0)
{
for(int i=1; i<=9; i++)
{
if(flag && heng(sudo, a, b, i) && shu(sudo ,a, b,i) && fang(sudo, a, b, i))
{
sudo[a][b] = i;
dfs( (b==8)?a+1:a, (b==8)?0:b+1, sudo, flag);
sudo[a][b] = 0;
}
}
}
else
{
dfs( (b==8)?a+1:a, (b==8)?0:b+1, sudo, flag);
}
}
else
{
return ;
}
}
} int main()
{
int **sudo;
sudo = new int* [9];
for(int i=0; i<9; i++)
{
sudo[i] = new int [9];
} for(int i=0; i<9; i++)
{
for(int j=0; j<9; j++)
{
cin>>sudo[i][j];
}
} //dfs
bool flag = true;
dfs(0,0,sudo, flag); for(int i=0; i<9; i++)
{
delete [] sudo[i];
}
delete [] sudo; return 0;
}

  

描述

问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个粗线宫内的数字均含1-9,并且不重复。
输入:
包含已知数字的9X9盘面数组[空缺位以数字0表示]
输出:
完整的9X9盘面数组

知识点 查找,搜索,排序
运行时间限制 10M
内存限制 128
输入

包含已知数字的9X9盘面数组[空缺位以数字0表示]

输出

完整的9X9盘面数组

样例输入 0 9 2 4 8 1 7 6 3 4 1 3 7 6 2 9 8 5 8 6 7 3 5 9 4 1 2 6 2 4 1 9 5 3 7 8 7 5 9 8 4 3 1 2 6 1 3 8 6 2 7 5 9 4 2 7 1 5 3 8 6 4 9 3 8 6 9 1 4 2 5 7 0 4 5 2 7 6 8 3 1
样例输出 5 9 2 4 8 1 7 6 3 4 1 3 7 6 2 9 8 5 8 6 7 3 5 9 4 1 2 6 2 4 1 9 5 3 7 8 7 5 9 8 4 3 1 2 6 1 3 8 6 2 7 5 9 4 2 7 1 5 3 8 6 4 9 3 8 6 9 1 4 2 5 7 9 4 5 2 7 6 8 3 1

Sudoku 数独游戏的更多相关文章

  1. POJ - 2676 Sudoku 数独游戏 dfs神奇的反搜

    Sudoku Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smalle ...

  2. android开发——数独游戏

    最近研究了一下android,写了一个数独游戏,具体如下: 游戏界面需要重写一个ShuduView继承View, 然后自定义一个Dialog: 1.需要继承 Dialog 类, 2.并要定义一个有参构 ...

  3. C语言学习 数独游戏

    摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...

  4. 创建随机的9x9数独游戏终盘并打印

    创建随机的9x9数独游戏终盘并打印 项目github地址 1. 项目相关要求 1.1 要求 利用程序随机构造出N个已解答的9x9数独棋盘 . 输入 数独棋盘题目个数N(0<N<=10000 ...

  5. POJ 2676 Sudoku (数独 DFS)

      Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14368   Accepted: 7102   Special Judg ...

  6. Swift数独游戏优化——C++与OC混编、plist自动生成

    一.为什么要C++与OC混编? 在我之前的数独游戏中涉及到的数独游戏生成算法是参考的网上其他人的算法,是利用C++来实现的.   但是在我的例子中我发现这样存在一定的局限性: 1.我是利用Termin ...

  7. 2015南阳CCPC H - Sudoku 数独

    H - Sudoku Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny g ...

  8. Leetcode0037--Sudoku Solver 数独游戏

    [转载请注明]http://www.cnblogs.com/igoslly/p/8719622.html 来看一下题目: Write a program to solve a Sudoku puzzl ...

  9. 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...

随机推荐

  1. Sublime一键预览

    //chrome{ "keys": [ "f12" ], "command": "side_bar_files_open_with ...

  2. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  3. Java反射遍历数组

    日志中有时候需要查看数组中的值,但是重载很多的打印函数,觉得很别扭.所以想通过反射,获取数组中的值,打印出来.Java提供了数组反射操作的类,之前没有关注过,提供的方法简单易用. public sta ...

  4. Java线程中带有返回值的线程Callable

    在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现C ...

  5. windows系统nginx配置root绝对路径的问题

    看了下logs下面的error.log文件,发现路径有问题,修改了conf配置,把root的路径反斜杠要用两个反斜杠进行转义,再次运行正常了.

  6. phpcms v9联动菜单的调用方法及get_linkage函数简单过程

    {get_linkage($r['areaid'],1,' >> ',1)} 复制代码 当然这个 $r 也不是绝对的.要看你的loop 是如何写的. {loop $data $n $r} ...

  7. Bash:-:-通过awk获取文本变量的赋值

    txt格式: ... logport='13000' sessionport='23000' ... ######################## 只获取logport的赋值13000 awk ' ...

  8. maven项目和普通项目转换

     

  9. 接触Matlab5年一个总结(Matlab要掌握的一些要点 )

    阅读目录 前言 Matlab的开发环境与简单介绍 Matlab的常见命令 Matlab的灵魂-矩阵操作 Matlab的.m或.fig的编程与技巧 从大二开始接触到matlab,讲真,这是一个我觉得很良 ...

  10. King's Quest —— POJ1904(ZOJ2470)Tarjan缩点

    King's Quest Time Limit: 15000MS Memory Limit: 65536K Case Time Limit: 2000MS Description Once upon ...