CCF 201803-1 跳一跳
是自己的想法,所以实现起来比较麻烦。
#include<iostream>
using namespace std;
int main()
{
int a[31] = { 1 };
int every;
// 把输入的数存入数组进行保存
for (int i = 0; a[i] != 0; i++)
{
cin >> every;
a[i+1] = every;
}
// 判断第一次输入的数是0,1,2中的哪一个
int score = 0;
if (a[1] == 0) cout << "0" << endl;
else {
if (a[1] == 1) score = 1;
else score = 2;
}
// 模拟跳一跳计数过程
int count = 1;// 用来统计连续出现相同的数字
for (int i = 2; a[i] != 0; i++)
{
if (a[i] == a[i - 1] && a[i] == 1) {
score = score + 1;
count = 1;// 释放掉前面保存的count
}
else {
if (a[i] == a[i - 1] && a[i] == 2) {
count++;// 只有连续出现2时,才需要对2翻倍计分
score = score + 2*count;
}
else {
if (a[i] != a[i - 1] && a[i] == 1) {
count = 1;// 释放掉前面保存的count
score = score = score + 1;
}
else {
score = score + 2;
count = 1;// 释放掉前面保存的count
}
}
}
}
if(score!=0)
cout << score << endl;
return 0;
}
释放掉前面保存的count这一句代码,重复出现的次数比较多,可以再优化一下。