国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS實現判斷有效的數獨算法示例

2019-11-19 12:04:24
字體:
來源:轉載
供稿:網友

本文實例講述了JS實現判斷有效的數獨算法。分享給大家供大家參考,具體如下:

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。

1.數字 1-9 在每一行只能出現一次。
2.數字 1-9 在每一列只能出現一次。
3.數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。

數獨部分空格內已填入了數字,空白格用 ‘.' 表示。

示例 1:

輸入:

[
["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"]
]

輸出: true

示例 2:

輸入:

[
["8","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"]
]

輸出: false

解釋: 除了第一行的第一個數字從 5 改為 8 以外,空格內其他數字均與 示例1 相同。

但由于位于左上角的 3x3 宮內有兩個 8 存在, 因此這個數獨是無效的。

說明:

1.一個有效的數獨(部分已被填充)不一定是可解的。
2.只需要根據以上規則,驗證已經填入的數字是否有效即可。
3.給定數獨序列只包含數字 1-9 和字符 ‘.' 。
4.給定數獨永遠是 9x9 形式的。

<script>var isValidSudoku = function(board) { const boxes = [{}, {}, {}, {}, {}, {}, {}, {}, {}]; const cols = [{}, {}, {}, {}, {}, {}, {}, {}, {}]; const rows = [{}, {}, {}, {}, {}, {}, {}, {}, {}]; let test = [{}, {}, {}, {}, {}, {}, {}, {}, {}]; for (let i = 0; i < 9; i++) {  for (let j = 0; j < 9; j++) {   const digit = board[i][j];   if (digit !== '.') {    const k = Math.floor(j / 3) + (Math.floor(i / 3) * 3);    if (boxes[k][digit] || cols[j][digit] || rows[i][digit]) {     return false;    }    boxes[k][digit] = cols[j][digit] = rows[i][digit] = true;   }  } } return true;};const board = [ ["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"]]console.log(isValidSudoku(board))</script>

使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼,可得如下運行結果:

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昆明市| 玛曲县| 正宁县| 威信县| 九江市| 射洪县| 赣州市| 乃东县| 绥芬河市| 宣武区| 南昌市| 佳木斯市| 故城县| 贵定县| 东莞市| 讷河市| 长寿区| 左权县| 沅江市| 易门县| 晋中市| 方山县| 永吉县| 乐安县| 开封市| 论坛| 大埔区| 棋牌| 驻马店市| 如东县| 磴口县| 河池市| 饶河县| 什邡市| 遵化市| 安达市| 枣阳市| 靖宇县| 门源| 大田县| 鄂托克旗|