题干:给定整数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;
}
}