麻烦各位帮忙看看哪有问题,只通过了第一个
查看原帖
麻烦各位帮忙看看哪有问题,只通过了第一个
1652343
yvhcel888楼主2025/1/28 22:41
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t, m;//t总时间,m数目
	cin >> t >> m;
	if (t < 1 || t>1000 || m < 1 || m>100)
	{
		return 0;
	}
	int dp[1005][105] = { 0 };
	int w[105];
	int c[105];
	int a, b;
	for (int i = 1; i <= m; i++)
	{
		cin >> w[i] >> c[i];//w采集单株时间,c采集单株价值
		if (w[i] < 1 || w[i]>100 || c[i] < 1 || c[i]>100)
		{
			return 0;
		}
	}
	for (int m1 = 1; m1 <= m; m1++)
	{
		for (int t1 = 0; t1 <= t; t1++)
		{
			if (t1 < w[m1])
			{
				dp[m1][t1] = dp[m1 - 1][t1];
			}
			else
			{
				dp[m1][t1] = max(dp[m1 - 1][t1], dp[m1 - 1][t1 - w[m1]] + c[m1]);
			}
		}
	}
	cout << dp[m][t];
}
2025/1/28 22:41
加载中...