
Javaアルゴリズムで分からないことがあるので質問します。
a,b,c,d,e,f,g
これらの文字を各一回使ってできる文字列の、全てのパターンを一覧で表示したいのですが、なかなかうまくいきません。
出力結果は、下記のように全パターン出力するようなJavaプログラムなんですが。
↓出力結果↓
abcdefgh
abcdefhg
abcdehfg
・・・・・・・・
hgfedacb
hgfedcab
hgfedcba
※自分ではとりあえずここまでできています。
public class Test {
public static void main(String[] args) {
String[] pattern = {"a","b","c","d","e","f","g","h"};
for(int i = 0; i <= pattern.length; i++){
System.out.print(pattern[i]);
if(i == pattern.length){
System.out.println("");
}
}
}
}
宜しくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
package pp;
public class perm0 {
static void print_perm(int[] perm){
for(int x: perm){
System.out.print(x + " ");
}
System.out.println();
}
static void make_perm(int n, int[] perm, boolean[] flag){
if(n == perm.length){
print_perm(perm);
} else {
for(int i = 1; i <= perm.length; i++){
if(flag[i]) continue;
perm[n] = i;
flag[i] = true;
make_perm(n + 1, perm, flag);
flag[i] = false;
}
}
}
//数
public static void main(String[] args){
make_perm(0, new int [8], new boolean [9]);
}
}
No.2
- 回答日時:
効率とか考えずに総当りなアルゴリズムですけど
全桁分ループして、上位の桁で使用済みな文字だったらスキップ、
使用していない文字だったら連結して処理続行して、
一番内側のループで表示すればできそうじゃない?
※インデントを全角スペースにしています。
char[] ch = {'a', 'b', 'c'};
StringBuilder buf = new StringBuilder();
public static void main(String[] args) {
// 基本的な考え方
for(int loop1 = 0; ch.length; loop1++) {
for(int loop2 = 0; ch.length; loop2++) {
if (loop1 == loop2) continue;
for(int loop3 = 0; ch.length; loop3++) {
if (loop1 == loop3 || loop2 == loop3) continue;
buf.setLength(0);
buf.append(ch[loop1]).append(ch[loop2]).append(ch[loop3]);
System.out.println(buf.toString());
}
}
}
// 再帰処理にしてみると
f("");
}
public void f(String code) {
if (code.length() == ch.length) {
Systen.out.println(code);
} else {
for (int i=0; i<ch.length; i++) {
if (-1 < code.indexOf(ch[i])) continue;
buf.setLength(0);
buf.append(code).append(ch[i]);
f(buf.toString());
}
}
}
動作確認はしていないので、あしからず。
No.1
- 回答日時:
8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 40320個もあるので上記サイトでは最後まで表示しきってくれなかったが、
手元でテキストファイルにリダイレクトしてみたらちゃんと出力されているようだった。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java Java 配列<選挙> 4 2023/07/31 15:07
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java java final 1 2022/06/10 22:49
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
数値⇒漢数字変換 java
-
繰り返しによる星印の出力
-
テキストボックスに入力された...
-
取得した変数の値に1000を...
-
#の表記
-
美しいコードって?
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Java CDLC 1.0 での日付計算
-
Java キーボードから負の数が入...
-
java キーボード入力された値の...
-
javaの条件分岐でコンソールに...
-
【JAVA <identifier>がありま...
-
java 拡張for map
-
javaでforを用いて進数を変換す...
-
Javaアルゴリズムで分からない...
-
配列を逆順させて表示させる方...
-
文字列から数字を取り出す方法
-
入力データ数を入力して、その...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
7つ数字を表示したら改行すると...
-
countに実行した回数をいれたい...
-
JAVAのfor文で困っています。
-
(急いでいます)Javaで3回間違...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
点数をだす時に、maxとminがお...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
配列を逆順させて表示させる方...
-
Java 配列 勝敗、引き分け判定...
-
繰り返しによる星印の出力
-
javaプログラムについて
おすすめ情報