

java初心者です。
学校で数独を解けという問題が出て、問題の意味もまったくわからないのでヒントください。
問題
数独を解くプログラムを作成せよ。ただし、すでに埋まっているマスを入力する時にはi,j,n(改行)でひとつの数字を入力できるものとし、終了条件は、0,0,0を入力するとする。
問題用紙には1問だけ数独が載ってあるのですが、
初歩的な質問で申し訳ありませんが
まずこのプログラムは、その1問だけ載っているマスが少し埋まっているプログラムを打ち込んでから解くプログラムを考えるのでしょうか?
普通、数独を解くプログラムとは、空いているマスにキーボード入力して、解くのでしょうか?それとも自動に動いて解くのでしょうか?
はじめにプログラムをコンパイルしたときにどう言葉が出るようにすればようのでしょうか?
終了条件0,0,0とは、000を入力したら終わる?ということでしょうか?
マスを作って、クリックすると数字が…というようなjavaは習ってなくコマンドプロントでコンパイルだけなので、数字を打って入力、エンターというだけで解くのだと思うのですが、まったくわからないです。
根本的にわからなくてすいません。
ぜひご回答よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
問題の解決策をソースコードをまじえて解説します。
なお、ソースコードは即興で書いたものなので、
とても汚いですが、勘弁ください。
一般的に数独はマスを全部埋めてから答え合わせするわけですね。
なので、i(入力したいマスの縦の位置),j(入力したいマスの横の位置),
n(入力したい数字)でエンターキーでマスに数字を入れていきます。
↓
マスの中の数字 int[][] num=new int[9][9];
正解判定のために boolean clear=true;
9*9マスを3*3のブロックを縦に並び替え
9個分縦に並べた配列に変換したあとの配列
int[][] sort=new int[9][9];
System.out.println(変更したいマスの縦座標を入力してください);
iに入力させた数字を代入
System.out.println(変更したいマスの横座標を入力してください);
iに入力させた数字を代入
System.out.println(変更後の数字を入力してください);
nにさせた数字を代入
num[i][j]=n;
これを0,0,0と入力するまで繰り返させる(while文)
そして、最後に正解の判定
boolean clear=true;
//横の列の数字にかぶってるものがないか
for(int i=0;i<9;i++){
for(int a=0;a<8;a++){
for(int b=a+1;b<9;b++){
//かぶってたらfalse
if(num[i][a]!=num[i][b]){
clrea=false;
}
}
}
}
//縦の列にかぶってる数字がないか
for(int j=0;j<9;j++){
for(int a=0;a<8;a++){
for(int b=a+1;b<9;b++){
//かぶってたらfalse
if(num[a][j]!=num[b][j]){
clrea=false;
}
}
}
}
//配列の並び替え
int count=0;//配列sortの縦座標
for(int bx=0;bx<3;bx++){
for(int by=0;by<3;by++){
for(int i=bx*3;i<bx*3+3;i++){
for(int j=by*3;j<by*3+3;j++){
sort[bx*3+by][count[i][j];
count++;
}
}
count=0;
}
}
}
次にsortの縦横にかぶってる数字がないか
上記のnumをsortに変えればできるのでソースコードは
省略します。
最後に結果の出力を
if(clear==true){
System.out.println("正解");
}else{
System.out.println("不正解");
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
数値⇒漢数字変換 java
-
JavaScriptの変数をjavaのメソ...
-
InputStream.read()でタイムア...
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
JavaScriptとVBScriptに関して
-
JSPでHashMap・配列の変数の値...
-
eclipseに記述したjavaファイル...
-
javaのコンパイルエラーについ...
-
オブジェクトの中のプロパティ...
-
strutsでlist型の入力を行うには
-
StrutsでJSPからListを受け取り...
-
requestの値が削除されません…
-
VBAで配列の計算
-
System.err. printlnとSystem.o...
-
Javaを使って、string型の年月...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
総称型ArrayList<E>への参照...
-
16進数数字を結合して、10進数...
-
JAVAのfor文で困っています。
-
数値⇒漢数字変換 java
-
Java 配列<選挙>
-
Java キーボードから負の数が入...
-
Java 入力した整数値の合計を、...
-
C#の質問
-
2つのスクロールバーを連動させ...
-
java 拡張for map
-
java 配列
-
Javaの問題について
-
Javaの問題について
-
Java 4択問題の連続する2問の正...
-
javaについて質問です。
おすすめ情報