某君有 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(1≤n≤20,1≤X≤2000)。
接下来输入 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 stubScanner 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);} }