数独规则:
- 数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
<?php// 输入:// [// ["5","3",".",".","7",".",".",".","."],// ["6",".",".","1","9","5",".",".","."],// [".","9","8",".",".",".",".","6","."],// ["8",".",".",".","6",".",".",".","3"],// ["4",".",".","8",".","3",".",".","1"],// ["7",".",".",".","2",".",".",".","6"],// [".","6",".",".",".",".","2","8","."],// [".",".",".","4","1","9",".",".","5"],// [".",".",".",".","8",".",".","7","9"]// ]// 输出: trueclass Solution {public function isValidSudoku(array $sudo) {$n = count($sudo);$littleSquare = [];$col = [];for ($i = 0; $i < $n; $i++) {$row = [];for ($j = 0; $j < $n; $j++) {// '.' 跳过if ($sudo[$i][$j] == '.') continue;// 检查行if (isset($row[$sudo[$i][$j]])) {return false;} else {$row[$sudo[$i][$j]] = 1;}// 检查列if (isset($col[$j][$sudo[$i][$j]])) {return false;} else {$col[$j][$sudo[$i][$j]] = 1;}// 检查小正方形if (isset($littleSquare[floor($i / 3)][floor(($j / 3))][$sudo[$i][$j]])) {return false;} else {$littleSquare[floor($i / 3)][floor(($j / 3))][$sudo[$i][$j]] = 1;}}}return true;}}$sudo = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]];$cls = new Solution();$r = $cls->isValidSudoku($sudo);var_dump($r);exit;
