实验五 数组 12. 岁月留痕

本文介绍了一个简单的程序,用于判断给定的整数序列是否能代表连续几个月的天数,包括考虑平年与闰年的情况。通过查找字符串的方式快速验证输入的天数序列是否符合实际月份天数规律。
  1. 岁月留痕
    【问题描述】

    给定 n (1 ≤ n ≤ 24)个正整数a1、a2、…、an,请判断这 n 个数是否是连续 n 个月份的天数,这些月份可以跨年度。

【输入形式】
输入第一行为一个整数 n,第二行为n个正整数 a1、a2、…、an(28 ≤ ai ≤ 31)。

【输出形式】
输出Yes或No。
【样例输入1】
4
31 31 30 31
【样例输出1】
Yes
【样例输入2】
2
30 30
【样例输出2】
No
【样例输入3】
5
29 31 30 31 30
【样例输出3】
Yes
【样例说明】

在第一个样例中,连续4个数是7、8、9、10月份的天数

在第二个样例中,没有哪两个连续月份的天数都为30

在第三个样例中,是某闰年的2、3、4、5、6月份的天数

#include <iostream>
#include <string>
using namespace std;
int main(){
    const string month={"31 29 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31"};
    string m;
    int a=0,n=0;
    cin>>n;
    cin.get();
    getline(cin,m);
    a=month.find(m);
    if (a!=-1){
        cout<<"Yes";
    }
    else {
        cout<<"No";
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值