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