深さ優先アルゴリズム


/**
 * @author Think
 *      a1,a2,a3,a4…,             ,        K
 */
public class        {
   //n=4,a={1,2,4,7};k=13;
   public static int n=4;
   public static int [] a={1,2,4,7};
   public static int k=13;
   public static void main(String[] args) {
//   findByFor(a,k);
  boolean boo=findByDeep(0,0);
  System.out.println("boo"+boo);
 }
 /**
 * @param a
 * @param k
 *     1、 1 2 、1 2 4 、 1 2 4 7
       2 、2 4、 2 4 7
       4 、4 7、
       7
 *  for     
 *
 */
public  static void findByFor(int[] a,int k){
  int sum=0;
  for(int i=0;i<a.length;i++){
    for(int j=i;j<a.length;j++){
//        System.out.println("a[j]"+a[j]);
          sum+=a[j];
//           System.out.println("sum"+sum);
          if(sum==k){
              System.out.println("true");
              return;
     }
   }
    sum=0;
  }
   }
/**
* @param a
* @param k        
*             
*
*/
public static boolean findByDeep(int i,int sum){
if(i==n) {System.out.println("one");return k==sum;}
if(findByDeep(i+1,sum)) {System.out.println("two");return true;}
if(findByDeep(i+1,sum+a[i])){System.out.println("three");return true;}
return false;
   }
}