题解 | #神奇的口袋#

神奇的口袋

https://www.nowcoder.com/practice/9aaea0b82623466a8b29a9f1a00b5d35

#include <bits/stdc++.h>

using namespace std;

const int N = 50;
int f[N][N]; // 从前i个物品中选,总体积是j的方案数 
int a[N];
 
int main(){
	
	int n;
	int V = 40;
	cin >> n;
	
	for (int i=1; i<=n; i++){
		cin >> a[i];
	}
	
	f[0][0] = 1;

	for (int i=1; i<=n; i++){
		for (int j=0; j<=V; j++){
			if (a[i] > j){
				f[i][j] = f[i-1][j];
			}
			else{
				f[i][j] = f[i-1][j] + f[i-1][j-a[i]];
			}
		}
	} 
	
	cout << f[n][V];
	
	return 0;
}
 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务