题目描述
【问题描述】
给出 n 件物品,每件物品有一个体积 V i ,求从中取出若干件物品能够组成的不同的体积和有多少种可能。
【输入格式】
第 1 行 1 个正整数,表示 n。
第 2 行 n 个正整数,表示 V i ,每两个数之间用一个空格隔开。
【输出格式】
一行一个数,表示不同的体积和有多少种可能。
输出格式
【数据规模】
对于 30% 的数据满足:n≤5,V i ≤10。
对于 60% 的数据满足:n≤10,V i ≤20。
对于 100% 的数据满足:n≤20,1≤V i ≤50。
输入样例
3
1 3 4
输出样例
6
提交
#include<bits/stdc++.h>
using namespace std;
int v[51];
bool a[1001];
int n;
void dfs(int dep,int sum){
if(dep>n){
a[sum]=true;
return;
}
dfs(dep+1,sum+v[dep]);
dfs(dep+1,sum);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
dfs(1,0);
int ans=0;
for(int i=1;i<=1000;i++)
if(a[i])ans++;
cout<<ans;
}