Bootstrap

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

结果

;