use*_*424 9 java arrays recursion permutation
在网站上有一些类似的问题已经有所帮助,但我不能完全解决这个问题,所以我希望这不是重复的.
这是一个家庭作业,你有一组字符[A,B,C],并且必须使用递归来获得所有的排列(重复).我有的代码是这样做的:
char[] c = {'A', 'B' , 'C'};
public void printAll(char[] c, int n, int k) {
if (k == n) {
System.out.print(c);
return;
}
else {
for (int j = 0; j<n; j++) {
for (int m = 0; m<n; m++) {
System.out.print(c[k]);
System.out.print(c[j]);
System.out.print(c[m] + "\r\n");
}
}
}
printAll(c, n, k+1);
}
Run Code Online (Sandbox Code Playgroud)
但是,参数n应该定义输出的长度,所以虽然这个函数打印出长度为3的所有排列,但它不能用长度为2的那些.我已经尝试了我能想到的一切,并且仔细研究了谷歌的搜索结果,而且我因为无法解决看似简单的问题而感到恶心.
如果我理解正确,您将获得一组字符c和所需的长度n.
从技术上讲,没有重复排列的东西.我假设你想要所有长度的字符串n来自c.
你可以这样做:
to generate all strings of length N with letters from C
-generate all strings of length N with letters from C
that start with the empty string.
to generate all strings of length N with letters from C
that start with a string S
-if the length of S is N
-print S
-else for each c in C
-generate all strings of length N with letters from C that start with S+c
Run Code Online (Sandbox Code Playgroud)
在代码中:
printAll(char[] c, int n, String start){
if(start.length >= n){
System.out.println(start)
}else{
for(char x in c){ // not a valid syntax in Java
printAll(c, n, start+x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7876 次 |
| 最近记录: |