我可能很容易解决问题。我有7个数字序列,我有3个数字(例如0,1和2)。我想生成所有可能的字符串,长度等于7,包含这3个数字。 像这样的东西: 0000001 0000010 0000011 。 。 。 12020001 12021001 。 。 。 所有可能的组合。如何实现这一点(为了我的目的,我将在java中这样做)?我很多年前在我的大学里得到了统计数据而且我没有记住它;)在此先感谢您的帮助。
答案 0 :(得分:2)
我更喜欢Perl,但我希望类似的东西可以在Java中使用:
for ($a1=0; $a1<=2; $a1++) {
for ($a2=0; $a2<=2; $a2++) {
for ($a3=0; $a3<=2; $a3++) {
for ($a4=0; $a4<=2; $a4++) {
for ($a5=0; $a5<=2; $a5++) {
for ($a6=0; $a6<=2; $a6++) {
for ($a7=0; $a7<=2; $a7++) {
$O=$a1.$a2.$a3.$a4.$a5.$a6.$a7;
print "$O\n";
}
}
}
}
}
}
}
答案 1 :(得分:2)
我希望这能解决你的问题:
public static void main(String[] args) {
// Create your list of numbers
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
getPermutations(list, 7, "");
}
/**
* Prints all possible permutations with a given list of numbers and a given
* length of the output strings.
*
* @param list
* - The list of possible numbers
* @param depth
* - The recursion depth which equals the lengths of the output
* strings
* @param val
* - The current value of the output string
*/
public static void getPermutations(List<Integer> list, int depth, String val) {
if (depth <= 0) {
return;
}
if (depth == 1) {
for (Integer number : list) {
System.out.println(number + val);
}
} else {
for (Integer number : list) {
getPermutations(list, depth - 1, number + val);
}
}
}
它更灵活,因为您可以选择输出字符串的长度和可能的数字列表。