背包满江红求助!!!
查看原帖
背包满江红求助!!!
965334
1_1_1_1_1_1_楼主2023/8/29 18:31

只绿了一个点

#include<bits/stdc++.h>

using namespace std;

int n;

int a[7] = {0, 1, 2, 3, 5, 10, 20};
int v[1000];//将所有砝码的重量都存在这 
int f[1000][1000];//背包 

int main()
{
	int i, j = 1, k, l;
	int num, cnt = 0;
	
	f[0][0] = 1;
	for(i = 1; i <= 6; i++)
	{
		cin >> num;
		l = j;
		for(j = l; j <= l + num - 1; j++)
		{
			v[j] = a[i];
			cnt += a[i];//重量重和 
		}
	}
	k = j - 1;//砝码总数 
	for(i = 1; i <= k; i++)
	{
		for(j = 0; j <= cnt; j++)
		{
			if(j < v[i])
			{
				f[i][j] = f[i - 1][j];
			}
			else
			{
				f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + 1);
			}
		}
	}
	printf("Total=%d", f[k][cnt]);
	return 0;
}
2023/8/29 18:31
加载中...