|NOIOJ|动态规划|2989:糖果

http://noi.openjudge.cn/ch0206/2989/statistics/

01背包,不知道为什么RE了一个点以后如果查明原因再改

#include
#include  
#include   
#include 
#define ms(i,j) memset(i, j, sizeof(i)); 
using namespace std;
int n,k;
int w[105];
int f[1000005]; 
int main()  
{
	scanf("%d%d", &n ,&k);
	int total = 0;
	for (int i=1;i<=n;i++) 
	{
		scanf("%d", &w[i]);
		total += w[i];
	}
	ms(f,0); 
	int orz = 0;
	for (int i=1;i<=n;i++)
	{
		for (int j=total;j>=w[i];j--)
		{
			f[j] = max(f[j], f[j-w[i]]+w[i]);
			if (f[j]%k==0) orz = max(orz, f[j]);
		}
	}
	printf("%d\n", orz);
    return 0;  
}  


你可能感兴趣的:(OpenJudge,Noi,动态规划,-,背包)