

#include<bits/stdc++.h>
using namespace std;
struct jiedian {
int val;
int id;
}a[10005];
int main() {
int n, top, val, sum = 0;
cin >> n >> top;
for (int i = 1;i <= n;i++) {
a[i].id = i;
cin>>a[i].val;
}
a[n + 1].id = n + 1;
a[n + 1].val=top;
for (int i = 1;i <= n;i++) {
sum += (a[i + 1].val - a[i].val) * i;
}
cout << sum;
}

一开始想进行对0到9挨个判断 该买哪个商品,但我没进行下去,好像有点复杂。
然后就用了题目给的提示(这也太贴心了吧,属于是出题人的用意了吧)

AC后,看了下其他人的思路,找到了我一开始放弃的思路
主干如下:

当时我放弃是因为,就是最后 截点是8 后面还有f(9) 这一边缘情况。
上代码完美解决了该问题。值得学习。
这篇博客分享了一段C++代码,用于解决数组区间累加的问题。作者最初尝试了遍历所有商品购买的可能性,但发现过于复杂。后来采用题目提示的方法,通过动态规划简化了问题,实现了从0到9的区间累加计算。代码中巧妙地处理了边界条件,成功解决了问题。
469

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



