/**
* 给定一个正数包含的数组,和目标数aim,求是否可以任意选择多个数组成aim?
* @author superman
*
*/
public class Main {
/**
* 主函数调用进行优化
* @param arr
* @param aim
* @return
*/
public static boolean isGet(int[]arr,int aim) {
if(arr==null||arr.length==0) {
return false;
}
int sum=0;
for(int i:arr) {
sum+=i;
}
if(sum<aim) {
return false;
}
return isSum(arr,0,0,aim);
}
public static boolean isSum(int[]arr,int i,int sum,int aim) {
if(i==arr.length) {
return sum==aim;
}
return isSum(arr,i+1,sum,aim)||isSum(arr,i+1,sum+arr[i],aim);
}
public static void main(String[] args) {
int[]arr= {1,3,5,7,9,10};
System.out.println(isGet(arr,8));
}
}
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/76036437f0fd9629f87b42c3003c3923.jpeg)