一道正常的01背包,但只过了三个点,求教
查看原帖
一道正常的01背包,但只过了三个点,求教
307826
Lamorak楼主2020/7/9 15:52
#include<bits/stdc++.h>
using namespace std;
int f[100000][100000],t,m,fe[10000],zhi[10000];
int main(){
	cin>>t>>m;
	for(int i=1;i<=m;i++){
		cin>>fe[i]>>zhi[i];
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=t;j++){
			f[i][j]=f[i-1][j];
			if(j>=fe[i]){ 
				if(f[i-1][j-fe[i]]+zhi[i]>f[i-1][j]){
					f[i][j]=f[i-1][j-fe[i]]+zhi[i];
				}
			}
		}
	}
	for(int i=1;i<=t;i++){
		for(int j=1;j<=m;j++){
			cout<<f[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<endl<<f[m][t];
	return 0;
}
2020/7/9 15:52
加载中...