从左往右判断。当轮到第i个熊猫时,为他分200牛奶,此时判断该熊猫满不满足。如果不满足,即i - 1的体重小于(或等于)它,就为它分mk[j - 1] + 100的牛奶(让它心情稳定下来)。如果该熊猫满足,判断左边的熊猫满不满足,调整到左边的熊猫满足之后,再判断左边的左边的熊猫满不满足……(用while循环就可以了)
可以在草稿纸上跑一遍,能更顺畅的写出代码
#include <iostream>
using namespace std;
const int SIZE = 10005;
int pan[SIZE];
int mk[SIZE];
int main() {
int N, res = 0;
cin >> N;
for (int i = 0; i < N; i ++) {
cin >> pan[i];
}
mk[0] = 200;
for (int i = 1; i < N; i ++) {
mk[i] = 200;
if (pan[i] > pan[i - 1]) mk[i] = mk[i - 1] + 100;
else if (pan[i] == pan[i - 1]) mk[i] = mk[i - 1];
else {
for (int j = i - 1; j >= 0; j --) {
if (pan[j] > pan[j + 1] && mk[j] <= mk[j + 1]) {
mk[j] = mk[j + 1] + 100;
} else if (pan[j] == pan[j + 1] && mk[j] < mk[j + 1]) {
mk[j] = mk[j + 1];
}
}
}
}
for (int i = 0; i < N; i ++) {
res += mk[i];
}
cout << res << endl;
return 0;
}