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

首頁 > 開發 > Java > 正文

Java基于二維數組實現的數獨問題示例

2024-07-13 10:16:05
字體:
來源:轉載
供稿:網友

本文實例講述了Java基于二維數組實現的數獨問題。分享給大家供大家參考,具體如下:

這里利用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程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵定县| 巴马| 玉屏| 西峡县| 莫力| 宜宾县| 增城市| 乌鲁木齐县| 郑州市| 新建县| 通辽市| 汶川县| 东乌珠穆沁旗| 井冈山市| 固阳县| 堆龙德庆县| 维西| 汉寿县| 珲春市| 本溪市| 长武县| 宿松县| 仁布县| 潢川县| 封开县| 澄江县| 松桃| 玉门市| 乐亭县| 奉贤区| 定远县| 鄂伦春自治旗| 罗源县| 芮城县| 阜南县| 那坡县| 屏东市| 龙里县| 竹北市| 宜兴市| 忻州市|