每天只能吃1次糖果理论上昨天吃了今天就不能吃但给自己k次机会在昨天吃了糖果的情况下今天仍然连续吃糖果。第一行输入 两个整数n和k表示拿到的进货计划表的天数和最多打破原则的次数。第二行n个整数a1a2an其中ai表示接下来第i天糖果专卖店的糖果的美味值输出表示小美能吃到的糖果美味值之和的最大值用c++实现并注释
#include
int n, k; int a[100005]; // 存储每天的糖果美味值
int main() { cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; } int ans = 0; // 记录最大的美味值 for (int i = 1; i <= n; i++) { int sum = 0; // 记录当前连续吃糖果的美味值之和 int cnt = 0; // 记录已经打破原则的次数 for (int j = i; j <= n; j++) { sum += a[j]; if (j > i && a[j] > a[j-1]) // 如果当前糖果比前一个糖果美味值高 { cnt++; // 打破了原则 if (cnt > k) // 如果超过了最多打破原则的次数 { sum -= a[j]; // 不吃当前糖果 break; // 结束当前连续吃糖果的循环 } } ans = max(ans, sum); // 更新最大的美味值 } } cout << ans << endl; return 0; }
原文地址: https://www.cveoy.top/t/topic/B8n 著作权归作者所有。请勿转载和采集!