求助大佬,关于01背包的循环顺序问题。
  • 板块学术版
  • 楼主铁甲战士
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/7/4 22:30
  • 上次更新2023/11/6 23:38:56
查看原帖
求助大佬,关于01背包的循环顺序问题。
168215
铁甲战士楼主2020/7/4 22:30
#include<bits/stdc++.h>
using namespace std;

int t,m;
int w[110],c[110];
int f[110][1010];

int main(){
	scanf("%d%d",&t,&m);
	for(int i = 1; i <= m ; i ++){
		scanf("%d%d",&w[i],&c[i]);
	}
	for(int i = 1; i <= m ; i ++){
		for(int j = t; j >= 1; j --){
			if(w[i] <= j){
				f[i][j] = max(f[i-1][j],f[i-1][j-w[i]]+c[i]);
			}
			else f[i][j] = f[i-1][j];
		}
	}
	cout<<f[m][t]<<endl;
	return 0;
}

为什么第二层for循环里面 j 从 t 到 1 而不是 j 从 1 到 j ? 求大佬指教Orz

2020/7/4 22:30
加载中...