日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

数独 php

發(fā)布時間:2025/3/20 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数独 php 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?

數(shù)獨求解程序 php版

轉(zhuǎn)載請注明出處:http://xiezhenye.com/2008/06/%e6%95%b0%e7%8b%ac%e6%b1%82%e8%a7%a3%e7%a8%8b%e5%ba%8f-php%e7%89%88.html
1
<?php 2 class Sudoku { 3 var $matrix; 4 5 function __construct($arr = null) { 6 if ($arr == null) { 7 $this->clear(); 8 } else { 9 $this->matrix = $arr; 10 } 11 } 12 13 function clear() { 14 for($i=0; $i<9; $i++) { 15 for($j=0; $j<9; $j++) { 16 $this->matrix[$i][$j] = array(); 17 for ($k = 1; $k <= 9; $k++) { 18 $this->matrix[$i][$j][$k] = $k; 19 } 20 } 21 } 22 } 23 24 function setCell($row, $col, $value){ 25 $this->matrix[$row][$col] = array($value => $value); 26 //row 27 for($i = 0; $i < 9; $i++){ 28 if($i != $col){ 29 if(! $this->removeValue($row, $i, $value)) { 30 return false; 31 } 32 } 33 } 34 //col 35 for($i = 0; $i < 9; $i++){ 36 if($i != $row){ 37 if(! $this->removeValue($i, $col, $value)) { 38 return false; 39 } 40 } 41 } 42 //square 43 $rs=intval($row / 3) * 3; 44 $cs=intval($col / 3) * 3; 45 46 for($i = $rs; $i < $rs + 3; $i++){ 47 for($j = $cs; $j < $cs + 3; $j++){ 48 if($i != $row && $j != $col){ 49 if(! $this->removeValue($i, $j, $value)) 50 return false; 51 } 52 } 53 } 54 return true; 55 } 56 57 function removeValue($row, $col, $value) { 58 $count = count($this->matrix[$row][$col]); 59 if($count == 1){ 60 $ret = !isset($this->matrix[$row][$col][$value]); 61 return $ret; 62 } 63 if (isset($this->matrix[$row][$col][$value])) { 64 unset($this->matrix[$row][$col][$value]); 65 if($count - 1 == 1) { 66 return $this->setCell($row, $col, current($this->matrix[$row][$col])); 67 } 68 } 69 return true; 70 } 71 72 function set($arr) { 73 for ($i = 0; $i < 9; $i++) { 74 for ($j = 0; $j < 9; $j++) { 75 if ($arr[$i][$j] > 0) { 76 $this->setCell($i, $j, $arr[$i][$j]); 77 } 78 } 79 } 80 } 81 82 function dump() { 83 for($i = 0; $i < 9; $i++){ 84 for($j = 0; $j < 9; $j++){ 85 $c = count($this->matrix[$i][$j]); 86 if($c == 1){ 87 echo " ".current($this->matrix[$i][$j])." "; 88 } else { 89 echo "(".$c.")"; 90 } 91 } 92 echo "\n"; 93 } 94 echo "\n"; 95 } 96 97 function dumpAll() { 98 for($i = 0; $i < 9; $i++){ 99 for($j = 0; $j < 9; $j++){ 100 echo implode('', $this->matrix[$i][$j]), "\t"; 101 } 102 echo "\n"; 103 } 104 echo "\n"; 105 } 106 107 function calc($data) { 108 $this->clear(); 109 $this->set($data); 110 $this->_calc(); 111 $this->dump(); 112 } 113 114 function _calc() { 115 for($i = 0; $i < 9; $i++){ 116 for($j = 0; $j < 9; $j++){ 117 if(count($this->matrix[$i][$j]) == 1) { 118 continue; 119 } 120 foreach($this->matrix[$i][$j] as $v){ 121 $flag = false; 122 $t = new Sudoku($this->matrix); 123 if(!$t->setCell($i, $j, $v)){ 124 continue; 125 } 126 if(!$t->_calc()){ 127 continue; 128 } 129 $this->matrix = $t->matrix; 130 return true; 131 } 132 return false; 133 } 134 } 135 return true; 136 } 137 } 138 139 $sd=new Sudoku; 140 $sd->calc(array( 141 array(0,5,0,0,0,6,0,9,0), 142 array(0,4,7,0,8,2,6,0,0), 143 array(0,8,0,0,0,7,0,5,2), 144 array(7,0,1,0,3,4,0,0,6), 145 array(0,3,0,0,2,0,0,8,0), 146 array(2,0,0,0,0,1,9,0,4), 147 array(4,7,0,1,0,0,0,6,0), 148 array(0,0,9,4,6,0,3,7,0), 149 array(0,1,0,2,0,0,0,4,0), 150 )); 151 152 $sd->calc(array( 153 array(1,0,0,0,0,6,9,0,0), 154 array(0,0,0,9,0,0,0,0,5), 155 array(2,0,0,1,0,0,0,0,3), 156 array(0,0,5,3,0,7,0,2,0), 157 array(3,0,0,6,0,0,0,0,1), 158 array(0,1,0,4,0,0,8,0,0), 159 array(9,0,0,0,0,2,0,0,7), 160 array(5,0,0,0,0,9,0,0,0), 161 array(0,0,3,7,0,0,0,0,4), 162 )); 163 164 $sd->calc(array( 165 array(7,0,0,1,0,0,0,0,5), 166 array(0,0,6,0,4,0,0,8,0), 167 array(0,0,1,0,0,0,0,0,0), 168 array(0,6,0,0,8,0,0,0,3), 169 array(0,8,0,0,0,9,0,7,0), 170 array(1,0,0,0,0,0,0,5,0), 171 array(0,0,0,0,0,0,9,0,0), 172 array(0,4,0,0,3,0,1,0,0), 173 array(9,0,0,0,0,7,0,0,2), 174 )); 175 176 $sd->calc(array( 177 array(0,5,0,0,0,0,0,2,0), 178 array(0,0,3,1,0,0,5,0,0), 179 array(0,0,6,0,0,8,0,0,0), 180 array(6,0,0,0,0,0,0,1,0), 181 array(8,0,0,6,0,0,0,0,4), 182 array(0,3,0,0,0,9,0,0,7), 183 array(0,0,0,5,0,0,3,0,0), 184 array(0,0,8,0,0,6,9,0,0), 185 array(0,9,0,0,0,0,0,7,0), 186 ));

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhangjun516/p/3182419.html

總結(jié)

以上是生活随笔為你收集整理的数独 php的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天干天天色天天 | 激情六月丁香 | 国产黄视频在线观看 | 国内精品久久久久久久久 | 亚洲精品动漫在线观看 | 精品久久精品 | 18禁裸乳无遮挡啪啪无码免费 | 亚洲女优在线观看 | 美女av免费在线观看 | 在线黄av| 狼人精品一区二区三区在线 | 日韩精品一区二区三 | 色综合久久久久久 | 91人人爽| 国产精品丝袜一区 | 91av福利视频 | 激情超碰在线 | jizz一区二区三区 | 国产99爱| 国产传媒视频在线观看 | 免费看av软件 | 久久93 | 亚洲成av人片一区二区梦乃 | 欧美丰满熟妇xxxxx | 日韩久久一区 | 亚洲五月网 | 国产精品人人爽 | 国产精品一区二三区 | 久久色播 | 精品国产不卡 | 久久久久久国产精品日本 | 艳妇臀荡乳欲伦交换在线看 | 日本激情一区二区三区 | 污污污www精品国产网站 | 久久精品这里只有精品 | 国产精品久久777777毛茸茸 | 夜夜撸影院 | 中文字幕第八页 | 免费成人在线观看动漫 | 大黄一级片 | 日本黄网站 | 蜜臀av一区二区 | 拍国产真实乱人偷精品 | 一级视频在线免费观看 | 69精品无码成人久久久久久 | 男生女生插插插 | 久久99国产精品视频 | 中文字幕免费在线观看 | 中文字幕免费在线看线人 | 制服.丝袜.亚洲.中文.综合懂 | 美女在线不卡 | 亚洲一区二区三区观看 | 亚洲欧美日韩激情 | 久久国产加勒比精品无码 | 不卡一区二区在线 | 亚洲精品入口 | 日韩免费福利视频 | 久久r精品| 久久99精品久久久久久国产越南 | 国产视频在线免费观看 | 亚洲av无码成人精品国产 | 国产网站免费 | 黑人巨大精品欧美 | 亚洲高清视频一区 | 在线观看特色大片免费网站 | 欧美20p | 懂色av蜜臂av粉嫩av | 人妻av无码一区二区三区 | 一本一道波多野结衣一区二区 | 中文字幕一区二区三区乱码在线 | 日韩av高清在线观看 | 青春草免费视频 | 在线看a网站 | 婷婷天堂网 | 国产黄色免费看 | 欧美天堂在线 | 加勒比不卡视频 | 亚洲区在线 | 性xxxxbbbb| 99热免费精品 | 一道本一区二区 | 手机看片日韩久久 | 欧美成人dvd在线视频 | 久久精品成人 | 国产激情自拍 | 国产一二区在线观看 | av怡红院 | 日韩视频在线观看一区二区 | 亚洲欧美日本在线观看 | 亚洲大尺度视频 | 日本特黄网站 | 日本色视 | 亚洲激情电影在线 | 大地资源在线观看免费高清版粤语 | 国产日韩一区二区在线观看 | 少妇一晚三次一区二区三区 | 午夜av免费看| 成人wwxx免费观看 | 在线黄av |