用PHP解决数独的一个例子

用PHP解决数独的一个例子
本文介绍了php实现的数独解决方案,供大家参考,如下:

一、数独问题描述:

对于给定的数字二维数组,不需要重复每行每行的数目。

两。实现代码:
< PHP
*数独求解器
*创建2017-4-18
*
* /
类数独{
var矩阵;
功能__construct($ ARR = null){
如果($ ARR = = null){
$ $ >清晰();
{人}
美元->矩阵= $ ARR;
}
}
函数清除(){
($ i = 0;$ i < 9;$ + +){
对于($ = 0;$ j 9;$ + +){
这个矩阵{;
对于($ = 1;$ K 9;$ + +){
这个矩阵{;
}
}
}
}
功能setcell(合排,美元关口,美元价值){
这一系列的代码是;

($ i = 0;$ i < 9;$ + +){
如果(i美元)!= $){
如果(!美元-> removevalue(合排,我,美元价值)){
返回false;
}
}
}

($ i = 0;$ i < 9;$ + +){
如果(i美元)!= $行){
如果(!美元-> removevalue(合我,美元关口,美元的价值)){
返回false;
}
}
}

RS = intval美元($行 / 3)* 3;
美元(美元关口CS = intval / 3)* 3;
对于($ i = $ RS;$ i $ RS + 3;$ + +){
对于($ = $ cs;$ cs $ cs + 3;$ + +){
如果(i美元)!= $行j!= $){
如果(!美元-> removevalue(合我,J,美元价值))
返回false;
}
}
}
返回true;
}
功能removevalue(合排,美元关口,美元价值){
$ =计数($);
如果($ = 1){
美元=!isset(美元->矩阵{ } { }美元美元行山坳{价值});
返回$;
}
If (isset ($this->matrix{$row}{$col}{$value})) {
unset(美元->矩阵{ } { }美元美元行山坳{价值});
如果($ = 1 = 1){
返回这个-> setcell(合排,美元关口,目前(美元->矩阵{ } { }美元美元列COL));
}
}
返回true;
}
函数集($ ARR){
($ i = 0;$ i < 9;$ + +){
对于($ = 0;$ j 9;$ + +){
如果(ARR {我} {美元美元美元J } > 0){
美元-> setcell(合我,J,ARR {我} {美元美元美元J });
}
}
}
}
函数转储(){
($ i = 0;$ i < 9;$ + +){
对于($ = 0;$ j 9;$ + +){
美元=计数(这个矩阵);
如果($ = 1){
。;
{人}

}
}

}

}
功能dumpall(){
($ i = 0;$ i < 9;$ + +){
对于($ = 0;$ j 9;$ + +){
回声崩溃('',美元->矩阵{ } { } $我J), T ;
}

}

}
函数钙($){
$ $ >清晰();
$这个集合($数据);
美元-> _calc();
$ $ >转储();
}
功能_calc(){
($ i = 0;$ i < 9;$ + +){
对于($ = 0;$ j 9;$ + +){
如果(计算这个矩阵{ $ i } { $ })= = 1){
继续;
}
foreach(美元->矩阵{ } { }我美元美元美元,v){
$标志= false;
新的数独游戏
如果(!T>setcell美元(美元美元美元我,J,V)){
继续;
}
如果(!$ T>_calc()){
继续;
}
$;
返回true;
}
返回false;
}
}
返回true;
}
}
新数独;
元(数组)
阵列(0,5,0,0,0,6,0,9,0),
阵列(0,4,7,0,8,2,6,0,0),
阵列(0,8,0,0,0,7,0,5,2),
阵列(7,0,1,0,3,4,0,0,6),
阵列(0,3,0,0,2,0,0,8,0),
阵列(2,0,0,0,0,1,9,0,4),
阵列(4,7,0,1,0,0,0,6,0),
阵列(0,0,9,4,6,0,3,7,0),
阵列(0,1,0,2,0,0,0,4,0),
));
元(数组)
阵列(1,0,0,0,0,6,9,0,0),
阵列(0,0,0,9,0,0,0,0,5),
阵列(2,0,0,1,0,0,0,0,3),
阵列(0,0,5,3,0,7,0,2,0),
阵列(3,0,0,6,0,0,0,0,1),
阵列(0,1,0,4,0,0,8,0,0),
Array (9,0,0,0,0,2,0,0,7),
阵列(5,0,0,0,0,9,0,0,0),
阵列(0,0,3,7,0,0,0,0,4),
));
元(数组)
阵列(7,0,0,1,0,0,0,0,5),
阵列(0,0,6,0,4,0,0,8,0),
阵列(0,0,1,0,0,0,0,0,0),
阵列(0,6,0,0,8,0,0,0,3),
阵列(0,8,0,0,0,9,0,7,0),
阵列(1,0,0,0,0,0,0,5,0),
阵列(0,0,0,0,0,0,9,0,0),
阵列(0,4,0,0,3,0,1,0,0),
阵列(9,0,0,0,0,7,0,0,2),
));
元(数组)
阵列(0,5,0,0,0,0,0,2,0),
阵列(0,0,3,1,0,0,5,0,0),
阵列(0,0,6,0,0,8,0,0,0),
阵列(6,0,0,0,0,0,0,1,0),
阵列(8,0,0,6,0,0,0,0,4),
阵列(0,3,0,0,0,9,0,0,7),
阵列(0,0,0,5,0,0,3,0,0),
阵列(0,0,8,0,0,6,9,0,0),
阵列(0,9,0,0,0,0,0,7,0),
));
>

结果如下:
一亿五千二百三十四万六千七百九十八
九亿四千七百五十八万二千六百一十三
三亿八千六百九十一万七千四百五十二
七亿九千一百八十三万四千五百二十六
五亿三千四百六十二万九千一百八十七
二亿六千八百七十五万一千九百三十四
四亿七千三百一十九万八千二百六十五
八亿二千九百四十六万五千三百七十一
六亿一千五百二十七万三千八百四十九

一亿三千七百二十五万六千九百四十八
四亿六千八百九十七万三千二百一十五
二亿五千九百一十八万四千六百七十三
六亿八千五百三十一万七千四百二十九
三亿九千四百六十二万八千七百五十一
七亿一千二百四十九万五千八百三十六
九亿四千六百五十三万二千一百八十七
五亿七千一百八十四万九千三百六十二
八亿二千三百七十六万一千五百九十四

七亿三千八百一十九万六千四百二十五
二亿九千六百三十四万五千七百八十一
四亿五千一百二十七万八千三百九十六
五亿六千九百七十八万四千二百一十三
三亿八千二百五十一万九千六百七十四
一亿七千四百六十二万三千八百五十九
六亿二千七百四十五万一千九百三十八
八亿四千五百九十三万二千一百六十七
九亿一千三百八十六万七千五百四十二

九亿五千一百三十六万七千四百二十八
七亿八千三百一十四万二千五百六十九
二亿四千六百九十五万八千七百三十一
六亿二千九百四十七万五千八百一十三
八亿七千五百六十一万三千二百九十四
一亿三千四百二十八万九千六百五十七
四亿六千七百五十九万一千三百八十二
三亿一千八百七十二万六千九百四十五
五亿九千二百八十三万四千一百七十六

关于PHP相关内容的更多读者感兴趣的读者可以看到特别站:PHP数据结构和算法教程

希望本文能对PHP程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部