hihocoder 01背包问题

#include


using namespace std;
int valueMax[501][100001];
int valueNeed[1001];
int need[200001];

void knap(int n, int m);
int main()
{
	int N, M;
	while(cin>>N>>M)
	{
	    
	for (int i = 1; i<=N; i++)
	{
		cin >> need[i];
		cin >> valueNeed[i];
	}
	knap(N, M);
	cout << valueMax[N][M] << endl;
	}
	
    return 0;

}


void knap(int n, int value)
{
	int i, j;

	for (i = 0; i <= n; i++)
	{
		valueMax[i][0] = 0;
	}
	for (j = 0; j <= value; j++)
	{
		valueMax[0][j] = 0;
	}

	for (i = 1; i <= n; i++)
	for (j = 1; j <= value; j++)
	{

		if (j= valueMax[i - 1][j - need[i]] + valueNeed[i])
			valueMax[i][j] = valueMax[i - 1][j];
		else
			valueMax[i][j] = valueMax[i - 1][j - need[i]] + valueNeed[i];
	}



}

姐姐发现,wrong ans 原因四,数组大小刚好是hiho上声称的最大容量。于是多加上一个1就对了。。。。以上代码AC  hiahia

你可能感兴趣的:(学啊学)