
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class test5 {
public static LinkedList<Integer> path = new LinkedList<>();
public static List<List<Integer>> result = new ArrayList<>();
public static int sum = 0;
public static boolean isValid(int i,int[] nums){
if(i < 2){
return true;
}
int num = nums[i-2];
if(path.contains(num)){
return false;
}
return true;
}
public static void backtracking(int[] nums,int n,int num){
if(path.size() != 0){
result.add(new ArrayList<>(path));
}
if(num > n){
return;
}
for(int i = num;i <= n;i++){
if(!isValid(i,nums)){
continue;
}
path.add(i);
backtracking(nums,n,i+1);
path.removeLast();
}
}
public static void main(String[] args){
int n = 3;
int[] nums = new int[]{1,1};
backtracking(nums,3,1);
System.out.println(result.size());
}
}
纯手工自己制作,带点小骄傲哈哈
本文详细介绍了使用Java实现的回溯算法,通过backtracking方法解决路径问题,重点展示了如何在给定数组中寻找符合特定条件的路径,并将找到的所有路径存入结果列表。作者分享了自定义的isValid函数验证路径有效性,以及如何手工构建解决方案并输出结果数量。
1228

被折叠的 条评论
为什么被折叠?



