给出 n 件物品,每件物品有一个体积 V i ,求从中取出若干件物品能够组成的不同的体积和有多少种可能。
Format
Input
第 1 行 1 个正整数,表示 n。
第 2 行 n 个正整数,表示 V i ,每两个数之间用一个空格隔开。
Output
一行一个数,表示不同的体积和有多少种可能。
思路:这道题只要把握好数据范围就行了,应该是1000以内 。。。
CODE:
#include <bits/stdc++.h>
using namespace std;
int v[21], n;
bool f[1010];
void dfs(int dep, int sum) {
if (dep == n + 1) {
f[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 (f[i])
ans++;
cout << ans << endl;
return 0;
}