糖醋里脊

有召唤,爱自由.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

背包问题递归java

Posted on 2015-02-14 21:34  糖醋里脊er  阅读(463)  评论(0)    收藏  举报
 1 public boolean PackageProblem(int[] arr,int start,int targetLeft,int target)
 2     {
 3         if(arr.length==0) 
 4         {
 5             System.out.println("no Answer");
 6             return false;
 7         }
 8         if(start==arr.length)
 9         {
10             int[] tempArr=new int[arr.length-1];
11             System.arraycopy(arr, 1, tempArr, 0, arr.length-1);

15 return PackageProblem(tempArr, 0, target, target); 16 } 17 else if(arr[start]>targetLeft) 18 { 19 return PackageProblem(arr, start+1, targetLeft, target); 20 } 21 else if(arr[start]==targetLeft) 22 { 23 System.out.println("yes has answer"); 24 return true; 25 } 26 else{ 27 return PackageProblem(arr, start+1, targetLeft-arr[start], target); 28 } 29 30 }

 

int[] arr={11,10,8,7,5,3};
int target=21;

但是这个数组要是从大到小排好的?

int[] arr={11,8,7,5,3,10};就不行