91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中利用二維數組實現一個數獨問題

發布時間:2021-03-19 17:15:48 來源:億速云 閱讀:231 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關怎么在Java中利用二維數組實現一個數獨問題,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

具體如下:

(1)生成簡易數獨

(2)生成數獨問題**

代碼

import java.util.Random;
import java.util.ArrayList;
public class Suduku {
  /**
   *打印二維數組,數獨矩陣
   */
  public static void printArray(int a[][])
  {
    for (int i = 0; i < 9; i++) {
      for (int j = 0; j < 9; j++) {
        System.out.print(" "+a[i][j]);
        if (0==((j+1)%3)) {
          System.out.print(" ");
        }
      }
      System.out.println();
      if(0==((i+1)%3))
      {
        System.out.println();
      }
    }
  }
  /**
   * 產生一個1-9的不重復長度為9的一維數組
   */
  public static ArrayList<Integer> creatNineRondomArray()
  {
    ArrayList <Integer>list = new ArrayList<Integer>();
    Random random=new Random();
    for (int i = 0; i < 9; i++) {
      int randomNum=random.nextInt(9)+1;
      while (true) {
        if (!list.contains(randomNum)) {
          list.add(randomNum);
          break;
        }
        randomNum=random.nextInt(9)+1;
      }
    }
    System.out.println("生成的一位數組為:");
    for (Integer integer : list) {
      System.out.print(" "+integer.toString());
    }
    System.out.println();
    return list;
  }
  /**
   *通過一維數組和原數組生成隨機的數獨矩陣
   *
   *遍歷二維數組里的數據,在一維數組找到當前值的位置,并把一維數組
   *當前位置加一處位置的值賦到當前二維數組中。目的就是將一維數組為
   *依據,按照隨機產生的順序,將這個9個數據進行循環交換,生成一個隨
   *機的數獨矩陣。
   *
   */
  public static void creatSudokuArray(int[][]seedArray,ArrayList<Integer> randomList)
  {
    for (int i = 0; i < 9; i++) {
      for (int j = 0; j < 9; j++) {
        for (int k = 0; k < 9; k++) {
          if(seedArray[i][j]==randomList.get(k))
          {
            seedArray[i][j]=randomList.get((k+1)%9);
            break;
          }
        }
      }
    }
    System.out.println("處理后的數組");
    Suduku.printArray(seedArray);
  }
  public static void creatSudokuQuestion(int [][] a)
  {
    Random rand=new Random();
    for(int i=0;i<9;i++){
      for(int j=0;j<4;j++){
      a[i][(int)rand.nextInt(9)]=0;
      }
    }
    Suduku.printArray(a);
  }
  //
  public static void main(String[] args) {
    int seedArray[][]={
        {9,7,8,3,1,2,6,4,5},
        {3,1,2,6,4,5,9,7,8},
        {6,4,5,9,7,8,3,1,2},
        {7,8,9,1,2,3,4,5,6},
        {1,2,3,4,5,6,7,8,9},
        {4,5,6,7,8,9,1,2,3},
        {8,9,7,2,3,1,5,6,4},
        {2,3,1,5,6,4,8,9,7},
        {5,6,4,8,9,7,2,3,1}
    };
    System.out.println("原始的二維數組:");
    Suduku.printArray(seedArray);
    ArrayList<Integer> randomList=Suduku.creatNineRondomArray();
    Suduku.creatSudokuArray(seedArray, randomList);
    System.out.println("生成數獨問題:");
    Suduku.creatSudokuQuestion(seedArray);
  }
}

輸出:

原始的二維數組:
 9 7 8 3 1 2 6 4 5 
 3 1 2 6 4 5 9 7 8 
 6 4 5 9 7 8 3 1 2 

 7 8 9 1 2 3 4 5 6 
 1 2 3 4 5 6 7 8 9 
 4 5 6 7 8 9 1 2 3 

 8 9 7 2 3 1 5 6 4 
 2 3 1 5 6 4 8 9 7 
 5 6 4 8 9 7 2 3 1 

生成的一位數組為:
 2 3 9 1 6 8 7 5 4
處理后的數組
 1 5 7 9 6 3 8 2 4 
 9 6 3 8 2 4 1 5 7 
 8 2 4 1 5 7 9 6 3 

 5 7 1 6 3 9 2 4 8 
 6 3 9 2 4 8 5 7 1 
 2 4 8 5 7 1 6 3 9 

 7 1 5 3 9 6 4 8 2 
 3 9 6 4 8 2 7 1 5 
 4 8 2 7 1 5 3 9 6 

生成數獨問題:
 0 5 7 9 6 3 0 0 0 
 9 6 3 0 0 0 0 5 7 
 0 2 4 1 0 7 9 6 0 

 5 0 1 6 0 9 2 0 0 
 6 0 9 2 0 0 5 7 0 
 2 0 8 0 7 1 0 3 9 

 7 1 5 0 0 6 4 8 2 
 3 0 6 4 8 2 7 0 5 
 4 8 2 7 0 0 3 9 6

關于怎么在Java中利用二維數組實現一個數獨問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特前旗| 集安市| 固阳县| 南平市| 清丰县| 嘉祥县| 通城县| 前郭尔| 都江堰市| 丹江口市| 九江县| 兴隆县| 萍乡市| 临漳县| 夏津县| 平安县| 霍州市| 长岭县| 柞水县| 贵德县| 伽师县| 花莲县| 西和县| 河北区| 塔城市| 英吉沙县| 迭部县| 平塘县| 时尚| 拜城县| 错那县| 远安县| 宣城市| 武清区| 衡山县| 泗洪县| 旬阳县| 定南县| 贺兰县| 周口市| 镇远县|