【CSP CCF记录】201803-1第13次认证 跳一跳
题目
样例输入
1 1 2 2 2 1 1 2 2 0
样例输出
22
思路
没有技术含量的一道题,解题的关键是理解游戏规则。用state标记跳跃状态,以下是对游戏规则的分析:
1. state=1,跳到方块上但没跳到中心,得1分
2. state=2,跳到方块中心
- 这是本游戏第一次跳跃 或 前一次没跳到中心,得2分
- 这是连续第centre次跳到方块中心,得2*center分
3. state=0,游戏结束
代码
#include<bits/stdc++.h>
using namespace std;
int state,sum=0;
int main()
{
int before=0;//记录上一次跳跃得分
int centre=1;//标记这是第几次跳到方块中心
while(cin>>state)
{
if(state==1)
{
sum+=1;
before=1;
centre=1;
}
else if(state==2&&before!=2)//包含第一次跳跃、前一次是1分两种情况
{
sum+=2;
before=2;
centre++;
}
else if(state==2&&before==2)
{
sum+=centre*2;
before=2;
centre++;
}
else if(state==0)
{
break;
}
//cout<<sum<<endl;
}
cout<<sum;
}