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