题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

// HJ41 称砝码.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include<iostream>
#include<bits/stdc++.h>

using namespace std;

int main()
{
	int n;
	while (cin >> n)
	{
		int sum = 0;
		vector<int>weight(n);
		vector<int>nums(n);
		for (int i = 0; i < n; i++)
		{
			cin >> weight[i];
		}
		for (int i = 0; i < n; i++)
		{
			cin >> nums[i];
			sum += nums[i] * weight[i];
		}
		vector<bool>dp(sum + 1, false);
		dp[0] = true;
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < nums[i]; j++)
			{
				for (int k = sum; k >= weight[i]; k--)
				{
					if (dp[k - weight[i]])
					{
						dp[k] = true;
					}
				}
			}
		}
		int count = 0;
		for (int i = 0; i <= sum; i++)
		{
			if (dp[i])
			{
				count++;
			}	
		}
		cout << count << endl;
	}
	return 0;
}

全部评论

相关推荐

09-13 17:25
亲切的00后在笔试:我也遇到了,所以我早他一步查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务