最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題示例

 更新時(shí)間:2018年01月06日 13:00:41   作者:handsome_ZHANG  
這篇文章主要介紹了Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題,涉及java針對數(shù)組的遍歷、計(jì)算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題。分享給大家供大家參考,具體如下:

這里利用Java二維數(shù)組實(shí)現(xiàn)數(shù)獨(dú)問題。

(1)生成簡易數(shù)獨(dú)
(2)生成數(shù)獨(dú)問題**

代碼

import java.util.Random;
import java.util.ArrayList;
public class Suduku {
  /**
   *打印二維數(shù)組,數(shù)獨(dú)矩陣
   */
  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();
      }
    }
  }
  /**
   * 產(chǎn)生一個(gè)1-9的不重復(fù)長度為9的一維數(shù)組
   */
  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("生成的一位數(shù)組為:");
    for (Integer integer : list) {
      System.out.print(" "+integer.toString());
    }
    System.out.println();
    return list;
  }
  /**
   *通過一維數(shù)組和原數(shù)組生成隨機(jī)的數(shù)獨(dú)矩陣
   *
   *遍歷二維數(shù)組里的數(shù)據(jù),在一維數(shù)組找到當(dāng)前值的位置,并把一維數(shù)組
   *當(dāng)前位置加一處位置的值賦到當(dāng)前二維數(shù)組中。目的就是將一維數(shù)組為
   *依據(jù),按照隨機(jī)產(chǎn)生的順序,將這個(gè)9個(gè)數(shù)據(jù)進(jìn)行循環(huán)交換,生成一個(gè)隨
   *機(jī)的數(shù)獨(dú)矩陣。
   *
   */
  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("處理后的數(shù)組");
    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("原始的二維數(shù)組:");
    Suduku.printArray(seedArray);
    ArrayList<Integer> randomList=Suduku.creatNineRondomArray();
    Suduku.creatSudokuArray(seedArray, randomList);
    System.out.println("生成數(shù)獨(dú)問題:");
    Suduku.creatSudokuQuestion(seedArray);
  }
}

輸出:

原始的二維數(shù)組:
 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 

生成的一位數(shù)組為:
 2 3 9 1 6 8 7 5 4
處理后的數(shù)組
 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 

生成數(shù)獨(dú)問題:
 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 

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • SpringBoot接口惡意刷新和暴力請求的解決方法

    SpringBoot接口惡意刷新和暴力請求的解決方法

    在實(shí)際項(xiàng)目使用中,必須要考慮服務(wù)的安全性,當(dāng)服務(wù)部署到互聯(lián)網(wǎng)以后,就要考慮服務(wù)被惡意請求和暴力攻擊的情況,所以本文給大家介紹了SpringBoot接口惡意刷新和暴力請求的解決方法,需要的朋友可以參考下
    2024-11-11
  • Java?JDK內(nèi)置常用接口和深淺拷貝

    Java?JDK內(nèi)置常用接口和深淺拷貝

    這篇文章主要介紹了Java?JDK內(nèi)置常用接口和深淺拷貝,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • mybatis-plus 如何判斷參數(shù)是否為空并作為查詢條件

    mybatis-plus 如何判斷參數(shù)是否為空并作為查詢條件

    這篇文章主要介紹了mybatis-plus 如何判斷參數(shù)是否為空并作為查詢條件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 一篇文章帶你入門java工廠模式

    一篇文章帶你入門java工廠模式

    這篇文章主要介紹了Java工廠模式,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    在實(shí)際項(xiàng)目中由于服務(wù)器內(nèi)存有限,人工清理常會忘記,本文主要介紹了Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Java 日期與時(shí)間API相關(guān)用法總結(jié)

    Java 日期與時(shí)間API相關(guān)用法總結(jié)

    這篇文章主要介紹了Java 日期與時(shí)間API相關(guān)用法總結(jié),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • 精致小巧的java相冊制作方法

    精致小巧的java相冊制作方法

    這篇文章主要為大家詳細(xì)介紹了精致小巧的java相冊制作方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    這篇文章主要介紹了spring aop底層源碼執(zhí)行邏輯剖析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08
  • mac安裝配置jdk環(huán)境變量

    mac安裝配置jdk環(huán)境變量

    這篇文章主要為大家介紹了mac安裝配置jdk環(huán)境變量實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實(shí)例代碼詳解)

    java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實(shí)例代碼詳解)

    這篇文章主要介紹了java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評論

鄂托克旗| 阿拉善盟| 木里| 扶绥县| 神木县| 若尔盖县| 温宿县| 堆龙德庆县| 榆林市| 时尚| 忻城县| 安乡县| 稷山县| 建阳市| 根河市| 怀安县| 鹿邑县| 柳江县| 临高县| 德惠市| 南通市| 高雄市| 沐川县| 英德市| 博爱县| 岫岩| 阳春市| 丰都县| 无极县| 应用必备| 上饶县| 武功县| 启东市| 望城县| 怀宁县| 武陟县| 阿瓦提县| 七台河市| 石河子市| 时尚| 库伦旗|