勤奋的涟漪
Time Limit:1000MS Memory Limit:65536K
Total Submit:7 Accepted:1
Description
涟漪进入集训队后,他会去实验室训练或者去操场锻炼。 接下来n天,每天的情况是一下4种中的一种: 1.当天体育馆关门了和没有训练赛 2.当天体育馆关门了和有训练赛 3.当天体育馆开放和没有训练赛 4.当天体育馆开放和有训练赛 涟漪知道之后n天的情况。 涟漪每一天可以休息,或者打训练赛(当天有训练赛)或者运动(当天体育馆开放)。 涟漪要制定一个训练计划,决定每天干什么,但是涟漪不会连续两天都运动或者连续两天都打训练赛, 请帮涟漪找出她最少休息的天数(她不打训练赛和运动)。 休息的时候,她会做下面的数学题
Input
第一行一个整数 n(1<=n<=100) 第二行有n个数a1,a2,a3,....an(0<=ai<=3)) ai=0 ,代表第一种情况 ai=1,代表第二种情况 ai=2 ,代表第三种情况 ai=3 ,代表第四种情况
Output
输出 一个数 表示(涟漪休息的天数) 乘以(数学题的答案的积)。
Sample Input
7
1 3 3 2 1 2 3
Sample Output
0
Source
ac代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
/*
qian-->1:????
qian-->2:????
qian-->3:????
*/
int i,n,cnt=0,qian=1;
int a[200]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(qian==1 && a[i]==0 || qian==2 && a[i]==2 || qian==2 && a[i]==0 || qian==3 && a[i]==0 || qian==3 && a[i]==1)
cnt++,qian=1;
else if(qian==2)
qian=3;
else if(qian==3)
qian=2;
else
{
if(a[i]==1) qian=3;
else if(a[i]==2) qian=2;
else
{
if(a[i+1]==1) qian=2;
else
qian=3;
}
}
}
printf("%d",cnt*(-24));
return 0;
}
注意:当他休息时除外的所有天数都是在工作(刷题or运动),但可能那天运动馆开门并且有训练赛,这时就要考虑下一天做什么,不能与下一天的事件重复,若下一天休息就随便选