CSP-201803-1-跳一跳
解题思路
- 使用
getline
函数接收一行输入,即玩家的跳跃序列。 - 初始化总得分
scoreSum
为0,上一次得分lastGrade
为2(因为跳到中心的初始得分是2),以及一个布尔标志flag
表示上一次是否跳到了中心(初始值为0,即没有跳到)。 - 遍历输入的跳跃序列:
- 如果遇到“0”,表示玩家没跳到方块上,游戏结束,跳出循环。
- 如果遇到“1”,表示玩家跳到了方块上但未跳到中心,将总得分加1,上一次得分重置为2,并设置
flag
为0(没有跳到中心)。 - 如果遇到“2”,表示玩家跳到了方块中心:
- 如果上一次也是跳到中心(即
flag
为1),则这次得分为上次得分加2。 - 更新总得分
scoreSum
,将flag
设置为1(表示这次跳到了中心)。
- 如果上一次也是跳到中心(即
- 最后输出总得分
scoreSum
。
完整代码
#include<iostream>
#include<string>
using namespace std;int main() {string getScore;getline(cin, getScore);int scoreSum = 0, lastGrade = 2;bool flag = 0; // flag=1,上一次跳跃在中心for (int i = 0; i < getScore.size(); i++){if (getScore[i]=='0'){break;}else if (getScore[i] == '1'){scoreSum++;lastGrade = 2;flag = 0;}else if (getScore[i] == '2'){if (flag) // 上一次跳跃在中心{lastGrade += 2;}scoreSum += lastGrade;flag = 1;}}cout << scoreSum;return 0;
}