问题本身可以在这里找到。问题的主要内容是,Bessie正在玩过山车,但她感到头晕。在不超过她“头晕极限”的情况下,她最多能获得多少快乐。
输入由以下内容组成:
"N K L
N(1≤N≤1,000)是该过山车中段落的数量; K(1≤K≤500)是如果她在任何一段骑行中闭眼,Bessie晕眩级别将下降的数量; L(1≤L≤300,000)是Bessie可以容忍的晕眩极限 - 如果她的晕眩程度超过L,Bessie会生病,那肯定不好玩!
接下来的N行每行包含两个整数:
F D
F(1≤F≤20)是Bessie开着眼在该部分获得的总乐趣增加量,D(1≤D≤500)是Bessie开着眼在该部分获得的晕眩增加量。这些部分将按顺序列出。
我用的算法如下所示:
cin >> N; // sections
cin >> K; // amount dizziness can go down
cin >> L; // dizzy ceiling
belowL = L; // sets the amount of dizzy left
for (int i = 0; i < N; i++) {
cout << "\n" << i;
cin >> F >> D; // fun increase and dizzy increase
if (D < belowL) {
if (F >= D) {
funTotal += F;
}
}
else {
belowL -= K;
}
然而,这并不总是产生正确的结果。问题在哪里?它应该选择有趣的选项,除非它会使贝西超过生病的阈值。有更好的方法吗?