【发布时间】:2021-02-02 08:03:12
【问题描述】:
使用递归来打印 ArrayList 中名称字符串的所有排列,需要它们按特定顺序排列,有些行是正确的,然后有些行在切换排列的第一个单词的末尾时会混乱。例如索引,它需要是 3,1,2 然后是 3,2,1 但是它是相反的。
我的输出:
- 朱莉娅·卢卡斯·米娅
- 朱莉娅·米娅·卢卡斯
- 卢卡斯·朱莉娅·米娅
- 卢卡斯·米娅·朱莉娅
- 米娅·卢卡斯·朱莉娅
- 米娅·朱莉娅·卢卡斯
预期输出:
- 朱莉娅·卢卡斯·米娅
- 朱莉娅·米娅·卢卡斯
- 卢卡斯·朱莉娅·米娅
- 卢卡斯·米娅·朱莉娅
- 米娅·朱莉娅·卢卡斯
- Mia Lucas Julia(上面一行需要交换)
public static void allPermutations(ArrayList<String> permList, ArrayList<String> nameList,
int index) {
if (index == nameList.size() - 1) {
for (int i = 0; i < nameList.size(); i++) {
permList.add(nameList.get(i));
}
for (String val: permList) {
System.out.print(val + " ");
}
System.out.println();
permList.clear();
}
for (int i = index; i < nameList.size(); i++) {
Collections.swap(nameList, index, i);
allPermutations(permList, nameList, index + 1);
Collections.swap(nameList, index, i);
}
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
ArrayList<String> nameList = new ArrayList<String>();
ArrayList<String> permList = new ArrayList<String>();
nameList.add("Julia");
nameList.add("Lucas");
nameList.add("Mia ");
allPermutations(permList, nameList, 0);
}
【问题讨论】:
标签: java recursion permutation