#include<stdio.h>
#include<stdlib.h>
typedef struct Holl{
int time;
int value;
}Holl;
Holl* hollCaoyao(int num){
Holl* holl = (Holl*)malloc(sizeof(Holl)*(num+1));
for(int i = 1; i <= num; i++){
int time, value;
scanf("%d %d", &time, &value);
holl[i].time = time;
holl[i].value = value;
}
holl[0].time = 0;
holl[0].value = 0;
return holl;
}
int main()
{
int T,M;
scanf("%d %d", &T, &M);
Holl* holl = hollCaoyao(M);
int** dp = (int**)malloc(sizeof(int*)*(M+1));
for(int i = 0; i <= M; i++){
dp[i] = (int*)malloc(sizeof(int)*(T+1));
}
for(int i = 0; i <= M; i++){
for(int j = 0; j <= T; j++){
dp[i][j] = 0;
}
}
for(int i = 1; i <= M; i++){
for(int j = 1; j <= T; j++){
if(holl[i].time <= j){
if((holl[i].value+dp[i-1][j-holl[i].time])>dp[i-1][j]){
dp[i][j] = holl[i].value+dp[i-1][j-holl[i].time];
}
else{
dp[i][j] = dp[i-1][j];
}
}
else{
dp[i][j] = dp[i-1][j];
}
}
}
int max = 0;
for(int i = 0; i <= M; i++){
for(int j = 0; j <= T; j++){
//printf("%d ", dp[i][j]);
if(max<dp[i][j]){
max = dp[i][j];
}
}
//putchar('\n');
}
printf("%d", max);
return 0;
}
0.0分
0 人评分
A+B for Input-Output Practice (IV) (C++代码)浏览:677 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:664 |
格式化数据输出 (C语言代码)浏览:820 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:608 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:810 |
剔除相关数 (C语言代码)浏览:1091 |
【计算两点间的距离】 (C语言代码)浏览:844 |
核桃的数量 (C语言代码)浏览:828 |
C语言训练-求素数问题 (C语言代码)浏览:614 |