php数独,php数独求解
/*
* @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数独求解相关推荐
- java课程 数独 文库_一次数独生成及求解方案的剖析(Java实现)
数独生成及求解方案剖析(Java实现) 关键词 数独9x9 数独生成 数独解题 序言 最近业务在巩固Java基础,编写了一个基于JavaFX的数独小游戏(随后放链接).写到核心部分发现平时玩的数独这个 ...
- 软件工程基础个人项目——数独终局生成求解
目录 1.源代码的GitHub链接: 2.PSP表格(预估): 3.题目要求: 4.解题思路: 1)数独游戏规则 2)生成数独终局 2)求解数独 5.设计实现过程: 第一部分:sudoku类的构建 第 ...
- python37降到36原来的包还可以用吗_【lc刷题】36/37 有效的数独/解数独(143-144/300)...
143-144/300 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...
- 数独解题思路——求解数独
求解数独过程用到了DLX(Dancing Links)算法,算法的基础是回溯算法,主要用于解决精准覆盖问题. 回溯法及假设当前位置的数字,然后往下一个位置进行,直到进行到某一个位置时发现无论如何也找不 ...
- Linux数独小游戏C语言,C语言实现数独游戏的求解
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重复. 输入包含9x9的已知数字,空位用0补齐,中间用空格隔开.(输入数独题目确 ...
- c 语言写数独游戏,经典数独游戏+数独求解器—纯C语言实现
[转]NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直 ...
- python生成数独_数独生成与求解,Python实现
2.[文件] Generate.py ~ 3KB 下载(44) #!/usr/bin/env python # -*- coding: utf-8 -*- # written by Kurt Wang ...
- 【数独】数独游戏-微信小程序开发流程详解
有没有玩过数独游戏呢,听说,它是一个能训练大脑思维的棋盘类游戏,游戏规则很简单,通过小程序来实现很容易,非常适合对数独游戏逻辑感兴趣的同学,选择它开发入门吧. 准备 会使用微信开发者工具, 有Java ...
- “笨兔数独” 解数独软件 介绍及使用指南
最近使用C语言+win32对话框写了一个解数独题目的小软件.在这里可以下载:笨兔数独V1. 现在对软件的功能及如何使用做一个简要的介绍. 程序界面 1>.程序各个按钮说明 start按钮 你可以 ...
最新文章
- fscanf()函数具体解释
- BCH代币化方案讨论大爆发,你的观点是什么?
- ecshop商品详细描述调用商品相册代码
- 一个命令kill所有符合条件的进程
- 隐马尔科夫模型——简介
- Linux启动过程以及初始化
- jeecms v9导入myeclipse 2015 ehcache.xml报错问题
- linux系统snmpd服务内存偏高,Red Hat Enterprise Linux 5.4 64位系统SNMP内存泄漏(上)
- 计算机拆装与维修技能综述,综述虚拟机在计算机硬件组装与维护教学中的应用...
- 大数据hadoop常见端口
- 字符串是单一字符的无序组合吗_Python中拼接字符串的多种方法, 你想了解吗?...
- vscode占用C盘空间迁移到其他盘
- html实现图片轮播切换箭头,Vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)_鹿岛_前端开发者...
- w550 白屏解决办法
- jquery ligerui php,jQuery LigerUI操作表格
- 小程序也能接广告了,微信小程序广告位投放指南!
- 2013c语言二级等级考试试题,计算机等级考试二级c语言考试试题
- 关于计算机论文摘要和引言,论文引言和摘要有什么区别
- 南邮通达计算机组成,计算机组成习题课(南邮)
- 大户人家的孝道中有一条叫做晨昏定省