java用回溯法解决全排列问题,键盘输入
时间: 2024-03-20 21:38:55 浏览: 55
回溯法解决全排列问题
5星 · 资源好评率100%
下面是Java代码实现全排列问题的回溯法解法:
```java
import java.util.*;
public class Permutation {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入需要排列的字符串: ");
String str = sc.nextLine();
List<String> res = permute(str);
System.out.println(res);
}
public static List<String> permute(String str) {
List<String> res = new ArrayList<>();
backtrack(str.toCharArray(), 0, res);
return res;
}
public static void backtrack(char[] ch, int index, List<String> res) {
if (index == ch.length - 1) {
res.add(new String(ch));
return;
}
Set<Character> set = new HashSet<>();
for (int i = index; i < ch.length; i++) {
if (set.contains(ch[i])) continue; // 去重
set.add(ch[i]);
swap(ch, index, i);
backtrack(ch, index + 1, res);
swap(ch, index, i);
}
}
public static void swap(char[] ch, int i, int j) {
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
```
运行程序后,输入需要排列的字符串,程序会输出全排列结果。
阅读全文