得到整数X(暴力破解)

某君有 nnn 个互不相同的正整数,现在他要从这 nnn 个正整数之中无重复地选取任意个数,并仅通过加法凑出整数 XXX。求某君有多少种不同的方案来凑出整数 XXX。

输入格式

第一行,输入两个整数 n,X(1≤n≤20,1≤X≤2000)n,X(1 \leq n \leq 20, 1 \leq X \leq 2000)n,X(1n20,1X2000)。

接下来输入 nnn 个整数,每个整数不超过 100100100。

输出格式

输出一个整数,表示能凑出 XXX 的方案数。

样例输入

6 6
1 2 3 4 5 6

样例输出

4
package 计蒜客;

import java.util.Scanner;

public class 得到整数X2 {

    /**
     * @param args
     */
    static int x;
    static int count=0;
    static int n;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        n=scan.nextInt();
        x=scan.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<arr.length;i++){
            arr[i]=scan.nextInt();
        }
        dfs(arr,0,0);
        System.out.println(count);
    }
    public static void dfs(int[] arr,int i,int sum){
        if(i==n&&sum==x){count++;return;}
        if(i==n) return;
        if(sum>x){return;}
        dfs(arr,i+1,sum+arr[i]);
        dfs(arr,i+1,sum);
        
    }
}

 

posted @ 2018-03-14 14:27  henu小白  阅读(264)  评论(0编辑  收藏  举报