新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)怎么在Java中利用二維數(shù)組實現(xiàn)一個數(shù)獨(dú)問題,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),固原企業(yè)網(wǎng)站建設(shè),固原品牌網(wǎng)站建設(shè),網(wǎng)站定制,固原網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,固原網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
具體如下:
(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)生一個1-9的不重復(fù)長度為9的一維數(shù)組 */ public static ArrayListcreatNineRondomArray() { ArrayList list = new ArrayList (); 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)生的順序,將這個9個數(shù)據(jù)進(jìn)行循環(huán)交換,生成一個隨 *機(jī)的數(shù)獨(dú)矩陣。 * */ public static void creatSudokuArray(int[][]seedArray,ArrayList 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 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中利用二維數(shù)組實現(xiàn)一個數(shù)獨(dú)問題就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章標(biāo)題:怎么在Java中利用二維數(shù)組實現(xiàn)一個數(shù)獨(dú)問題
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/gepdjo.html