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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA代码—算法基础:数独问题(Sodoku Puzzles)

發布時間:2023/12/6 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA代码—算法基础:数独问题(Sodoku Puzzles) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA代碼—算法基礎:數獨問題(Sodoku Puzzles)

數獨問題(Sodoku Puzzles)

數獨游戲(日語:數獨 すうどく)是一種源自18世紀末的瑞士的游戲,后在美國發展、并在日本得以發揚光大的數學智力拼圖游戲。
拼圖是九宮格(即3格寬×3格高)的正方形狀,每一格又細分為一個九宮格。在每一個小九宮格中,分別填上1至9的數字,讓整個大九宮格每一列、每一行的數字都不重復。 數獨的玩法邏輯簡單,數字排列方式千變萬化。不少教育者認為數獨是鍛煉腦筋的好方法。

基本術語

單元格和值

一個數獨謎題通常包含有9x9=81個單元格,每個單元格僅能填寫一個值。對一個未完成的數獨題,有些單元格中已經填入了值,另外的單元格則為空,等待解題者來完成。

行和列

習慣上,橫為行,縱為列,在這里也不例外。行由橫向的9個單元格組成,而列由縱向的9個單元格組成。很明顯,整個謎題由9行和9列組成。

例如:一行的情況

例如:一列的情況

例如:一個完整的方形

接下來看問題:

原問題鏈接:https://leetcode.com/problems/valid-sudoku/description/

問題描述:判斷一個數獨游戲是否合法。數獨當前可以是部分填充,未填充部分用’.’代替。
有效地數獨并不是指該游戲是否有解,而僅僅判斷當前填充是否有效。

問題分析

判斷數獨是否有效,對于當前填充的數字,可以依次檢查:

  • 對于大九宮格來說,每一行,每一列不能有重復的數字。如果有重復的數字,就不是數獨。
  • 對于每個小九宮格來說,不能有重復的數字。如果有重復的數字,就不是數獨。
  • 算法設計

    0 => 0, 1 => 3, 2 => 6
    3 => 0, 4 => 3, 5 => 6
    6 => 0, 7 => 3, 8 => 6

    x = (i % 3) * 3

    0 => 0, 1 => 0, 2 => 0
    3 => 3, 4 => 3, 5 => 3
    6 => 6, 7 => 6, 8 => 6

    y = i / 3 * 3

    public class Solution {public boolean isValidSudoku(char[][] board) {for(int i = 0; i < 9; i++) {if(!isValid(board, i, i, 0, 8) || !isValid(board, 0, 8, i, i) || !isValid(board, i / 3 * 3, i / 3 * 3 + 2, i % 3 * 3, i % 3 * 3 + 2)) return false; }return true; }public boolean isValid(char[][] board, int xStart, int xEnd, int yStart, int yEnd) {HashSet<Integer> set = new HashSet<Integer>();for(int x = xStart; x <= xEnd; x++) {for(int y = yStart; y <= yEnd; y++) {if(board[x][y] != '.' && !set.add(board[x][y] - '0')) return false;}}return true;} }

    (完)原文地址http://www.bieryun.com/2479.html

    總結

    以上是生活随笔為你收集整理的JAVA代码—算法基础:数独问题(Sodoku Puzzles)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。