HDOJ1248(完全背包)

#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 

using namespace std;
#define INF  0xfffff;//0x代表十六进制
#define M 10

int num[3] = { 150,200,350 };
int dp[10050];



int main()
{
	int t;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		memset(dp, 0, sizeof(dp));
		int n;
		cin >> n;
		for (int i = 0; i < 3; i++)
			for (int j = num[i]; j <= n; j++) dp[j] = max(dp[j], dp[j - num[i]] + num[i]);  //与01背包不一样 是顺序
		cout << n - dp[n] << endl;
	}
}

你可能感兴趣的:(动态规划)