返回题解分享
讨论 / 题解分享/ 帖子详情

[USACO 2.3.4] Money Systems 货币系统 - 题解

题目中范围有问题,n取值应该为30,简单的完全背包组合问题

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e4 + 10;
int dp[30][N];
int a[N];
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int n,m;cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i],dp[i][a[i]] = 1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(j>a[i])
			dp[i][j] = dp[i-1][j] + dp[i][j-a[i]];
			else
			dp[i][j] += dp[i-1][j];
		}
	}
	cout<<dp[n][m]<<endl;
	return 0;
}
0 回复 0 转发 0 喜欢 6 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!