http://ac.jobdu.com/problem.php?pid=1114
#include <stdio.h>
int main(){
//freopen("in/1114.in","r",stdin);
int n,dp[41],a[41];
while(scanf("%d",&n) !=EOF){
for (int i = 1; i <=n; ++i) {
scanf("%d",&a[i]);
}
for (int i = 1; i <=40; ++i) {
dp[i] = 0;
}
dp[0] = 1;
for (int i = 1; i <=n ; ++i) {
for (int j=40; j>=a[i]; --j) {
if(j-a[i] >=0 && dp[j-a[i]] !=0 ){
dp[j] = dp[j] + dp[j-a[i]];
}
}
}
printf("%d\n",dp[40]);
}
}