#include <stdio.h> int count(int i, int sum); int a[100]; int n = 1; int main() { while(scanf("%d\n", &n) != EOF) { for(int i = 0; i < n; i++) scanf("%d\n", &a[i]); printf("%d", count(0, 40)); } return 0; } int count(int i, int sum){ if(sum == 0) //找到一组和为sum的组合数 return 1; if(i == n || sum < 0) //i==n说明没有其他的数来组合,sum<0说明组合不出 return 0; return //从数组的第i为开始,包含a[i],和不包含a[i] count(i + 1, sum - a[i]) + count(i + 1, sum); }