我最近参加了ACM认证的编程竞赛.这是我当时不能做的问题:
"给定一个包含n个元素的整数数组,编写一个程序来打印所有的排列."
请告诉我如何解决这个问题.有没有算法来做这类问题?
我一直在四处寻找解决我的问题.我解决了很多问题,但是这个问题仍然困扰着我:S很长一段时间我没有接触过Java编程(一般的编程)所以请在那里理解!;)
我的目标是从整数数组中获得所有组合.当我使用以下代码,应用于整数{1,2,3,4}的测试数组时,我希望有:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
2 1 3 4
2 1 4 3
(...)
但这里是我得到的
1 2 3 4
1 2 3 4 4 3
1 2 3 4 4 3 3 2 4
有人有线索,建议甚至解决方案吗?提前致谢!
public class Calculation{
(...)
public void Permute(ArrayList<Integer> soFar,ArrayList<Integer> rest){
if(rest.isEmpty()) this.fillMatrice(convertIntegers(soFar)); // there it goes in a previously created arrow of int
else{
for(int k=0;k<rest.size();k++){
ArrayList<Integer> next=new ArrayList<Integer>();
next=soFar;
next.add(rest.get(k));
ArrayList<Integer> remaining=new …Run Code Online (Sandbox Code Playgroud)