/*

* @parm array &$data

* @parm int $i  x

* @parm int $j  y

* return bool

*/

function checksd(&$data, $i ,$j)

{

if(empty($data)||(empty($i)&&$i!=0)||(empty($j)&&$j!=0))

{

echo __FILE__.__LINE__."参数错误";

return false;

}

//判断当前行

for($m=0; $m<9; $m++ )

{

if($data[$i][$j] == $data[$i][$m] && ($m!=$j))

{    return false;}

}

//判断列

for($m=0; $m<9; $m++)

{

if($data[$i][$j] == $data[$m][$j] && ($m!=$i))

{      return false; }

}

$ti  = (floor($i%3)) * 3 + $m;

$tj  = (floor($j%3)) * 3 + $n;

for($m=0; $m

{

for($n=0; $n

{

if($data[$i][$j] == $data[$ti][$tj] && ($m != $i || $n != $j))

{      return false;   }

}

}

return true;

}

$initdata = array(

array(0,0,3,0,0,2,0,4,1),

array(4,0,1,9,0,0,0,2,6),

array(0,0,0,4,0,0,9,0,0),

array(0,3,0,0,0,0,5,1,8),

array(0,5,9,0,0,0,2,6,0),

array(2,1,4,0,0,0,0,9,0),

array(0,0,7,0,0,8,0,0,0),

array(1,8,0,0,0,9,4,0,7),

array(9,6,0,7,0,0,1,0,0)

);

suduku($initdata, 0);

/*

* @parm array $data

* @parm int $n

* return array

*/

function suduku($data, $h)

{

$temp = array();

for($m=0; $m<9; $m++)

{

for($n=0; $n<9; $n++)

{

$temp[$m][$n] = $data[$m][$n];

}

}

$i = floor($h/9);

$j = floor($h%9);

if($temp[$i][$j] != 0)

{

if($h == 80)

{

prisd($temp);

}

else

{

suduku($data, $h+1);

}

}

else

{

for($k=1; $k<10; $k++)

{

$temp[$i][$j] = $k;

$flag  = checksd($temp, $i, $j);

//  var_dump($flag);

//    echo  ($h. ' '.$i .' '.$j.' '.$k);

if($flag)

{

if($h == 80)

prisd($temp);

else

{

//     echo  ($h. ' '.$i .' '.$j.' '.$k ).' guo
';

suduku($temp, $h+1);

}

$temp[$i][$j] = 0;

}

}

}

}

/*

* @parm  array $data

* void

*/

function prisd(&$data)

{

for($m=0; $m<9; $m++)

{

for($n=0; $n<9; $n++)

{

echo  $data[$m][$n]."  ";

}

echo '
';

}

echo '
------------------------------
';

}

php数独,php数独求解相关推荐

  1. java课程 数独 文库_一次数独生成及求解方案的剖析(Java实现)

    数独生成及求解方案剖析(Java实现) 关键词 数独9x9 数独生成 数独解题 序言 最近业务在巩固Java基础,编写了一个基于JavaFX的数独小游戏(随后放链接).写到核心部分发现平时玩的数独这个 ...

  2. 软件工程基础个人项目——数独终局生成求解

    目录 1.源代码的GitHub链接: 2.PSP表格(预估): 3.题目要求: 4.解题思路: 1)数独游戏规则 2)生成数独终局 2)求解数独 5.设计实现过程: 第一部分:sudoku类的构建 第 ...

  3. python37降到36原来的包还可以用吗_【lc刷题】36/37 有效的数独/解数独(143-144/300)...

    143-144/300 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...

  4. 数独解题思路——求解数独

    求解数独过程用到了DLX(Dancing Links)算法,算法的基础是回溯算法,主要用于解决精准覆盖问题. 回溯法及假设当前位置的数字,然后往下一个位置进行,直到进行到某一个位置时发现无论如何也找不 ...

  5. Linux数独小游戏C语言,C语言实现数独游戏的求解

    玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重复. 输入包含9x9的已知数字,空位用0补齐,中间用空格隔开.(输入数独题目确 ...

  6. c 语言写数独游戏,经典数独游戏+数独求解器—纯C语言实现

    [转]NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直 ...

  7. python生成数独_数独生成与求解,Python实现

    2.[文件] Generate.py ~ 3KB 下载(44) #!/usr/bin/env python # -*- coding: utf-8 -*- # written by Kurt Wang ...

  8. 【数独】数独游戏-微信小程序开发流程详解

    有没有玩过数独游戏呢,听说,它是一个能训练大脑思维的棋盘类游戏,游戏规则很简单,通过小程序来实现很容易,非常适合对数独游戏逻辑感兴趣的同学,选择它开发入门吧. 准备 会使用微信开发者工具, 有Java ...

  9. “笨兔数独” 解数独软件 介绍及使用指南

    最近使用C语言+win32对话框写了一个解数独题目的小软件.在这里可以下载:笨兔数独V1. 现在对软件的功能及如何使用做一个简要的介绍. 程序界面 1>.程序各个按钮说明 start按钮 你可以 ...

最新文章

  1. fscanf()函数具体解释
  2. BCH代币化方案讨论大爆发,你的观点是什么?
  3. ecshop商品详细描述调用商品相册代码
  4. 一个命令kill所有符合条件的进程
  5. 隐马尔科夫模型——简介
  6. Linux启动过程以及初始化
  7. jeecms v9导入myeclipse 2015 ehcache.xml报错问题
  8. linux系统snmpd服务内存偏高,Red Hat Enterprise Linux 5.4 64位系统SNMP内存泄漏(上)
  9. 计算机拆装与维修技能综述,综述虚拟机在计算机硬件组装与维护教学中的应用...
  10. 大数据hadoop常见端口
  11. 字符串是单一字符的无序组合吗_Python中拼接字符串的多种方法, 你想了解吗?...
  12. vscode占用C盘空间迁移到其他盘
  13. html实现图片轮播切换箭头,Vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)_鹿岛_前端开发者...
  14. w550 白屏解决办法
  15. jquery ligerui php,jQuery LigerUI操作表格
  16. 小程序也能接广告了,微信小程序广告位投放指南!
  17. 2013c语言二级等级考试试题,计算机等级考试二级c语言考试试题
  18. 关于计算机论文摘要和引言,论文引言和摘要有什么区别
  19. 南邮通达计算机组成,计算机组成习题课(南邮)
  20. 大户人家的孝道中有一条叫做晨昏定省

热门文章

  1. 【VUE】将图片的url或file类型转换成base64,并压缩图片大小
  2. PHP正则表达式提取html超链接中的h…
  3. JVM内存模型、相关参数设置与命令查看
  4. Redis缓存击穿、雪崩、穿透!(超详细)
  5. c语言零基础第三课:运算符学习
  6. 免费的计算机一级操作系统,计算机一级题题库,第二章操作系统
  7. 嵌入式 linux下proc目录下的文件详解
  8. 硅谷钢铁侠--Elon Musk
  9. 避免使用std::dynamic_pointer_cast
  10. 软件工程与计算机科学的区别