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; 
}
