题目简介
vasaya在假期想学习
给了n天的假期,并且给出每天假期的种类
0代表不能运动不能比赛
1代表不能运动能比赛
2代表能运动不能比赛
3代表能运动能比赛
运动和比赛都不能连续,问他最少休息几天
思路
创建一个数组去记录假期的状态
判断第一天状态,0的时候休息加一天
如果当天状态为三,本天不休,如果前一天是1的话将本天赋值为2,前一天是2的话今天赋值为1
2前面是2休一天,1前面是1休一天
输出
ac代码
#include <stdio.h>
int main()
{
int num[100];
int n,i,tongji;
while(scanf("%d",&n)!=EOF)
{
tongji=0;
i=0;
while(i<n)
{
scanf("%d",&num[i]);
i++;
}
//数组遍历输入
if(num[0]==0)
{
tongji++;
}
for(i=1;i<n;i++)
{
if(num[i]==0)
{
tongji++;
}
if(num[i]==1)
{
if(num[i-1]==1)
{
tongji++;
num[i]=0;
}
}
if(num[i]==2)
{
if(num[i-1]==2)
{
tongji++;
num[i]=0;
}
}
if(num[i]==3)
{
if(num[i-1]==1)
{
num[i]=2;
}
if(num[i-1]==2)
{
num[i]=1;
}
}
}
printf("%d\n",tongji);
}
return 0;
}
本文介绍了一个简单的算法,用于解决如何在不同类型的假期中规划活动,确保遵循运动和比赛的规则,同时尽量减少休息天数。通过状态转移的方式,该算法能够高效地计算出最小休息天数。
1万+

被折叠的 条评论
为什么被折叠?



