日后可能会写动态规划的做法。。。如果有思路的话
深搜 n个数从中选取若干个组成m
import java.util.*;
public class Main{
//深搜 n个数从中选取若干个组成m
public static int need;
public static boolean flag=false;
public static void DFS(int t,int[] a,int sum)
{
if(t>=a.length)
return;
for(int i=0;i<=1;i++)
{
sum=sum+i*a[t];
if(sum==need)
{
flag=true;
return;}
if(flag!=true&&sum<need)
{
int p=t+1;
DFS(p,a,sum);
}
}
}
public static int max(int a,int b)
{
return a>b?a:b;
}
public static void main(String[] ab) {
Scanner sca=new Scanner(System.in);
need=sca.nextInt();
int n=sca.nextInt();
int[] a=new int[n];
for(int i=0;i<=n-1;i++)
{
a[i]=sca.nextInt();
}
DFS(0,a,0);
System.out.println(flag);
}
}