この記事では、2次元配列に基づいてJavaによって実装された数独の問題について説明します。次のように、参照のために共有してください。
ここでは、Java 2次元アレイを使用して、Sudoku問題を実装します。
(1)単純な数独を生成する(2)数独の問題を生成**
コード
Import java.util.random; Import java.util.arraylist; public class suduku { / ***2次元アレイ、Sudoku Matrix* / public static void Printarray(int a [] []){for(int i = 0; i <9; i ++){for(int j = 0; j <9; j ++){for(j <9; j ++){ +[i] [j]); static arraylist <integer> creatninerondomarray(){arraylist <integer> <integer>(); list.add(ランダム); } system.out.println();返品リスト。 } /*** 1次元配列と元の配列を介してランダムな数独行を生成します** 2次元配列のデータを転送し、1次元配列の現在の値の位置を見つけ、1次元の配列*に加えて、現在の2次元アレイへの位置値を割り当てます。目的は、1次元配列を基礎として使用し、ランダムな順序でこれらの9つのデータを交換してランダムな数独行を生成することです。 * */ public static void createsudokuarray(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(j] = = = = = = = = = = = SeedArray [i] [j] = randomList.get((k+1)%9);壊す; }}}} system.out.println( "Processed Array"); suduku.printarray(Seedarray); } public static void createsudokuquestion(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,5,5,5,8,8,8,8,8,8,8,8,8,8,8,8,3,3,33,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, {7,8,9,1,2,3,4,5,6,7,8,9,9,9}、{1,2,3,4,5,6,7,8,9,9,9,9,9,1,2,3}、{8,9,7,2,3,3,1,5,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6 {5,6,4,8,9,7,2,3,1}}; system.out.println( "元の2Dアレイ:"); suduku.printarray(Seedarray); ArrayList <Integer> randomList = suduku.creatninerondomarray(); suduku.creatsudokuarray(Seedarray、RandomList); System.out.println( "Sudoku問題を生成:"); suduku.creatsudokuquestion(Seedarray); }}出力:
9 8 3 1 2 4 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 6 4 8 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 5 7 0 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 0 6 0 9 2 0 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 6 0 9 2 0 0 0 0 5 7 0 0 5 7 0 2 0 0 6 0 0 0 6 0 0 9 2 0 0 0 5 7 0 2 0 0 5 7 0 2 0 0 0 0 0 6 0 9 2 0 0 2 0 0 5 7 0 2 0 8 2 3 0 6 4 8 2 7 0 5 4 8 2 7 0 0 3 9 6
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。