【发布时间】:2014-09-11 14:00:34
【问题描述】:
我必须创建一个算法,该算法使用字符串数组显示所有可用的固定长度的无序序列。该方法需要是递归的,并且可能只需要一个整数。它还需要返回一个String数组。
假设我有“ab”和“ba”。 当我使用该方法给出 int 2 时,应该找到以下固定长度的无序序列:
abab
abba
baba
baab
我已经工作了好几个小时了,我觉得我为这件简单的事情工作得太辛苦了。我有不同类型的代码,我几乎可以正常工作(abba 显示了两次,而不是另一个序列),但我忘记将它返回到数组中,从而导致问题...... 我的代码看起来像这样,但未完成且不起作用:
static String[] syllables = {"ab", "ba"};
static String[] syllableWord;
public static void main(String[] args) {
int amountOfSillables = 2;
syllableWord = String[(int)Math.pow(amountOfSillables, amountOfSillables)];
String[] syllableWords = findSequences(amountOfSillables); // I may only use one parameter,
// which is 2 but should work with any number
for (int i = 0; i < syllableWords.length; i++) {
System.out.println(syllableWords[i]);
}
}
public static String[] findSequences(int n) {
if (n == 0) {
return syllableWord;
}
else {
for (int i = 0; i < syllables.length; i++) {
syllableWord += syllables[i]; // Doesn't work because syllableWord is an array.
// When it's a String this would kinda work, but it
// needs to be an array.
findSequences(n - 1);
syllableWord = syllableWord.substring(2); // Also doesn't work when it's an array.
}
}
}
有人可以帮帮我吗?这快把我逼疯了……
【问题讨论】:
-
syllableWord 不能是 perm 方法的访问权限。因为syllableWord是main方法中定义的局部变量
-
你为什么要求在你的递归调用中只有一个参数(一个整数)?
-
您不能使用 += 将项目添加到数组中。这段代码有很多编译错误
-
这不是您要找的吗? stackoverflow.com/questions/20906214/…
-
而“abab”不是“ab”和“ba”的排列。您正在尝试查找固定长度的无序序列,而不是排列。
标签: java arrays string recursion permutation