题目描述
给你一张容量一定的唱片,一些音乐的播放时间,问在每首曲子最多刻在唱片上一次的情况下,唱片上刻的音乐的播放时间和最长是多少。
输入
第一行,两个整数,第一个表示唱片的容量(<=90),第二个表示音乐的数量(<=8)。
接下来n行,每首音乐所花时间。
输出
第1行1个数字,表示唱片上刻的音乐的最长总时间。
样例输入
5 3 1 3 4
样例输出
5
code
#include<bits/stdc++.h>
using namespace std;
const int k=200;
int m,n,w[k];
int f[k];
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<=n;i++){
for(int v=m;v>=w[i];v--){
if(v>=w[i]){
f[v]=max(f[v],f[v-w[i]]+w[i]);
}
}
}
cout<<f[m];
return 0;
}

464

被折叠的 条评论
为什么被折叠?



