아래 입력에 대해이 오류가 발생했습니다. 다른 코드를 제안하십시오.나는 abcdefghijklmnopqrstuvwxyz 및 7의 입력에 대해 작동하지 않는 특정 길이의 문자열의 순열을 생성하기위한 코드를 가지고 있습니다.
abcdefghijklmnopqrstuvwxyz
7
오류 :
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.StringBuilder.toString(Unknown Source)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.generateCombination(c.java:24)
at aaa.c.main(c.java:37)
그것을 위해 노력하고 있습니다 :
abcdefghijklmnopqrstuvwxyz
5
패키지 AAA;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
class c {
static int c;
List<String> permutations = new LinkedList<String>();
Scanner sc=new Scanner(System.in);
String input =sc.nextLine();
int conbinationSize = sc.nextInt();
boolean[] isChoosed = new boolean[input.length()];
public void generateCombination(String partialOutput) {
if (partialOutput.length() == conbinationSize) {
permutations.add(partialOutput);
c++;
return;
}
for (int i = 0; i < input.length(); ++i) {
if (!isChoosed[i]) {
isChoosed[i] = true;
generateCombination(partialOutput + input.charAt(i));
isChoosed[i] = false;
}
}
}
void printCombination() {
for (String c : permutations) {
System.out.println(c);
}
}
public static void main(String[] args) {
c dfs = new c();
dfs.generateCombination("");
dfs.printCombination();
System.out.println(c);
}
}
깊은 재귀, 디버거를 시작하고 재밌게 보내십시오 :) – Shadov
@Whatzs '깊은'재귀 깊이를 호출하지 않겠습니다. –