如何使用PHP求解数独

  介绍

如何使用PHP求解数独?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>一、数独问题描述:

对于给出的数字二维数组,要求每行每列的数字不能重复。

<强>二,实现代码:

& lt; PHP ?/*,数独求解程序   ,* Created 提醒;2017-4-18   ,*   ,*/,class  Sudoku  {   美元var 才能;矩阵;   function 才能;__construct ($ arr =, null), {   ,,,if  (arr 美元;==,null), {   ,,,,,这个→美元明显();   ,,,},{else    ,,,,,这个→美元matrix =, arr美元;   ,,,}   ,,}   function 才能clear (), {   ,,,(i=0;美元,美元i<9;,我+ +美元),{   ,,,,,,(j=0;美元,美元j<9;, $ j + +), {   ,,,,,,,这个→美元矩阵[$ i] [j]美元,=,数组();   ,,,,,,,for  ($ k =1;祝福;k 美元;& lt;=, 9;, $ k + +), {   ,,,,,,,,,这个→美元矩阵[$ i] [j]美元($ k),=, $ k;   ,,,,,,,}   ,,,,,}   ,,,}   ,,}   function 才能;setCell(行,美元,坳美元,美元值){   ,,,这个→美元矩阵[美元行][坳美元],=,数组($ value =祝辞,美元值);   ,,,//行   ,,,($小姐:=,0;,美元小姐:& lt;, 9;,我+ +美元){   ,,,,,如果(小姐:美元!=,坳美元){   ,,,,,,,如果(!,$ this→removeValue(行美元,,我,,美元值)),{   ,,,,,,,,,return 假;   ,,,,,,,}   ,,,,,}   ,,,}   ,,//坳   ,,,($小姐:=,0;,美元小姐:& lt;, 9;,我+ +美元){   ,,,,,如果美元($小姐:!=,行){   ,,,,,,,如果(!,$ this→removeValue(我美元,美元,上校,美元值)),{   ,,,,,,,,,return 假;   ,,,,,,,}   ,,,,,}   ,,,}   ,,,//广场   ,,,$ rs=intval中(row 美元/,3),*,3;   ,,,$ c=intval中(col 美元/,3),*,3;   ,,,($小姐:=,rs;美元,美元小姐:& lt;, rs 美元;+,3;,我+ +美元){   ,,,,,,($ j =, cs;美元,美元j  & lt;, cs 美元;+,3;,$ j + +) {   ,,,,,,,如果(小姐:美元!=,row 美元;,,,j 美元;!=,坳美元){   ,,,,,,,,,如果(!,$ this→removeValue ($ i, j,美元,美元值))   ,,,,,,,,,,,return 假;   ,,,,,,,}   ,,,,,}   ,,,}   ,,,return 真实;   ,,}   function 才能;removeValue(行,美元,坳美元,美元值),{   count 美元,,,,=,count ($ this→矩阵[$行][$坳]);   ,,,如果(count 美元;==,1){   ,,,,,ret 美元;=,!收取($ this→矩阵[$行][美元坳][美元价值]);   ,,,,,return 随著美元;   ,,,}   ,,,if (收取($ this→矩阵[$行][美元坳][美元价值])),{   ,,,,,设置($ this→矩阵[$行][美元坳][美元价值]);   ,,,,,如果(count 美元;作用;1,==,1),{   ,,,,,,,return  $ this→setCell(行,美元,美元,上校,当前($ this→矩阵[$行][$坳]));   ,,,,,}   ,,,}   ,,,return 真实;   ,,}   function 才能;集(arr)美元,{   ,,,for ($小姐:=,0;,美元小姐:& lt;, 9;,我+ +美元),{   ,,,,,for  ($ j =, 0;, j 美元;& lt;, 9;, $ j + +), {   ,,,,,,,if  (arr [$ i] [j]美元美元,祝辞,0),{   ,,,,,,,,,这个→美元setCell ($ i, j,美元,美元arr [$ i] [j]美元);   ,,,,,,,}   ,,,,,}   ,,,}   ,,}   function 才能;转储(),{   ,,,($小姐:=,0;,美元小姐:& lt;, 9;,我+ +美元){   ,,,,,,($ j =, 0;, j 美元;& lt;, 9;, $ j + +) {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何使用PHP求解数独