80分,不知道错哪了
查看原帖
80分,不知道错哪了
1120513
oakjans楼主2023/11/29 10:51

#include<iostream>
#include<algorithm>
using namespace std;
int a[4][103];
int t[102][102][102];
int ti[102][102][102];
int n;
int main()
{
	int money, rib;
	cin >>  n;
	for (int i = 1; i <= n; i++) {
		cin >> a[1][i] >> a[2][i] >> a[3][i];
	}
	cin >> money >> rib;
	for (int i = 1; i <= n; i++) 
	{
		for (int j = money; j >= a[1][i]; j--)
		{
			for (int k = rib; k >= a[2][i]; k--) 
			{
				if (t[i - 1][j - a[1][i]][k - a[2][i]] + 1 > t[i - 1][j][k]) 
					{
						t[i][j][k] = t[i - 1][j - a[1][i]][k - a[2][i]] + 1;
						ti[i][j][k] = ti[i - 1][j - a[1][i]][k - a[2][i]] + a[3][i];
					}
				else if (t[i - 1][j - a[1][i]][k - a[2][i]] + 1 == t[i - 1][j][k]) {
					t[i][j][k] = t[i - 1][j][k];
					ti[i][j][k] = min(ti[i - 1][j][k], ti[i - 1][j - a[1][i]][k - a[2][i]] + a[3][i]);
				}
				else {
					t[i][j][k] = t[i - 1][j][k];
					ti[i][j][k] = ti[i - 1][j][k];
				}
			}
		}
	}
	cout << ti[n][money][rib];
	return 0;
}
2023/11/29 10:51
加载中...