这什么鬼?
查看原帖
这什么鬼?
1213524
C_plus_plus_12345楼主2024/12/20 21:45
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int N, M;
	cin >> N >> M;

	vector<int> prices(N);
	for (int i = 0; i < N; ++i)
	{
		cin >> prices[i];
	}

	// 使用 vector<int> 来代替 vector<bool>,每个元素表示对应金额是否可达
	vector<int> dp(M + 1, 0); // 0 表示不可达,1 表示可达
	dp[0] = 1;  // 不选择任何菜品,凑出金额为 0(可达)

	for (int i = 0; i < N; ++i)
	{
		// 注意这里要从 M 向下遍历,避免重复使用菜品
		for (int j = M; j >= prices[i]; --j)
		{
			// 如果之前能凑出 j - prices[i],则现在也能凑出 j
			dp[j] += dp[j - prices[i]];
		}
	}

	// 输出凑出金额 M 的方案数
	cout << dp[M] << endl;

	return 0;
}

本地能过,洛谷上直接 Compile Error\text{\color{yellow}Compile Error}

2024/12/20 21:45
加载中...