题干:给定整数a1,a2,a3....an,判断是否可以从中选出若干数,使他们的和恰好为k
思路:我们用数组a存储所有的整数,从a0开始依次决定是否取值,全部的n个数字决定之后再判断他们的和是不是等于k。
import javax.management.Query;
import java.lang.reflect.Array;
import java.util.*;
/**
* @version 1.0
* @author: Lked
* @date: 2021-09-24 10:56
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int []a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int k = sc.nextInt();
System.out.println(dfs(0,0,a,k));
}
static boolean dfs(int i,int sum,int []a,int k){
if (i == a.length){
return sum == k;
}
//不加a[i]
if (dfs(i+1,sum,a,k)){
return true;
}
//加a[i]
if (dfs(i+1,sum+a[i],a,k)){
return true;
}
return false;
}
}
这篇博客介绍了一种使用深度优先搜索(DFS)算法来解决从给定整数数组中选取数,使得它们的和等于特定值k的方法。通过递归地尝试包含或不包含当前元素,博主展示了如何遍历所有可能的组合并判断是否存在满足条件的子集。示例代码以Java实现,重点在于递归函数dfs的实现。
520

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



