899B

来源:互联网 发布:origin 画图 mac 编辑:程序博客网 时间:2024/06/04 19:55


题意:输入一个n,然后连输入n个月份的天数,让我们判断它给的连续月份天数是正确的么,正确就输出Yes,否则输出No。

题解:我们先开一个数组,保存一年中每月的天数。然后另开一个数组保存输入的每个月份天数,两层for循环,输入的月份去匹配一年中的月份,当输入的数组匹配结束,就表明这n个月份是合法的。cnt记录闰年2月的个数,因为范围n是24个月,两年最多一个闰年二月。最后判断输出。

#include<bits/stdc++.h>using namespace std;int a[12]= {31,28,31,30,31,30,31,31,30,31,30,31};int b[30];int main(){    int n,m,cnt,j,k,x;    while(cin>>n)    {        cnt=0;        for(int i=0; i<n; i++)            cin>>b[i];        for( j=0; j<12; j++)  ///一年12月        {            for( k=0; k<n; k++) ///月份去匹配一年中的月份            {                x=(k+j)%12;                if(x==1&&(b[k]!=28&&b[k]!=29)||(x!=1&&b[k]!=a[x]))///匹配                    break;                if(x==1&&b[k]==29) ///记录闰年在n个月中出现的次数                    cnt++;            }            if(k==n) break;  ///匹配成功跳出循环        }        if(j==12||cnt>1) ///匹配不成功或者闰年2月数超过了2就不正确            puts("No");        else puts("Yes");    }    return 0;}

原创粉丝点击