解题思路:f[i][j]表示i堆,余数为j 的糖果最大数量
注意事项:初始化f最大负值
参考代码:
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N = 1e2 + 10; int a[N], k, n,f[N][N]; int main() { cin >> n >> k; memset(f, -0x3f, sizeof f); f[0][0] = 0; for(int i = 1; i <= n; i ++) cin >> a[i]; for(int i = 1; i <= n; i ++) for(int j = 0; j < k; j ++ ) f[i][j] = max(f[i-1][j],f[i-1][(j + k - a[i] % k)%k] + a[i] ); cout << f[n][0]; return 0; }
0.0分
1 人评分