目录
题目描述
输入格式
输出格式
原问题链接
P1048 [NOIP2005 普及组] 采药 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
代码
#include<bits/stdc++.h>
#define MAX 1001
using namespace std;
int t[MAX],v[MAX];
int F[MAX][MAX];
void input(int N);
void initial(int T);
void Knapsack(int T_,int N_);
int main()
{
int time,num;
cin>>time>>num;
input(num);
initial(time);
Knapsack(time, num);
}//主函数
void input(int N){
for(int i=1;i<=N;i++){
cin>>t[i]>>v[i];
}
}//输入函数
void initial(int T){
for(int i=1;i<=T;i++){
F[0][i]=0;
}
}//初始化第零行
void Knapsack(int T_,int N_){
for(int i=1;i<=N_;i++){
for(int j=1;j<=T_;j++){
if(j<t[i]){
F[i][j]=F[i-1][j];
}
else{
F[i][j]=max(F[i-1][j-t[i]]+v[i],F[i-1][j]);
}
if(i==N_&&j==T_){
cout<<F[i][j];
}
}
}
}//背包问题算法函数