01 背包不可达一维一维的一定要从头遍历进行分类 二维可以从f[i]因为他在继承

include <bits/stdc++.h>

using namespace std;

int j[1005];
int f[1005];
int dp[1005];

int main() {
int m, n;
while (cin >> m >> n) {
if (m == -1 && n == -1) break;
memset(dp,-1,sizeof(dp));
for (int i = 1; i <= n; i++) {
cin >> j[i] >> f[i];
}

    dp[0]=0; 
    for(int i=1;i<=n;i++)
    {
    	for(int jj=m;jj>=f[i];jj--)
    	{
    		if(dp[jj-f[i]]!=-1) 
    		{
    			dp[jj]=max(dp[jj],dp[jj-f[i]]+j[i]);
			}
		}
	}
	cout<<dp[m]<<endl;
}
return 0;

}

posted @ 2025-11-22 21:05  ll今天也要加油啊  阅读(1)  评论(0)    收藏  举报