程序
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
int n,k;
scanf("%d%d",&n,&k);
long f[n+1][k],a[n+1];
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
scanf("%ld",&a[i]);
for(int i=1;i<=n;i++){
for(int q=0;q<=k-1;q++) f[i][q]=f[i-1][q];
for(int j=0;j<=k-1;j++)
if(f[i-1][j]+a[i]>f[i][(f[i-1][j]+a[i])%k]) f[i][(f[i-1][j]+a[i])%k]=f[i-1][j]+a[i];
}
printf("%ld",f[n][0]);
return 0;
}
这篇博客介绍了如何使用动态规划(DP)解决糖果问题,通过C++编程语言实现算法,详细阐述了程序设计思路和代码实现过程。
1万+

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



