实验七 数组(二)---岁月留痕

本文介绍了一种算法,用于判断一组给定的正整数是否代表连续n个月份的天数,涵盖平年和闰年的情况。通过数组比较,实现了对输入数据的有效验证。

0、题目概述

【问题描述】

       给定 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月份的天数

【评分标准】



1、分析

这一题的难点是烦,最多24个月。如果真的有空,可以考虑把所有的情况都列出来依次比较,这样复杂度貌似是o(1)

2、解决方案

情况分类:

我采取的是数组的形式,因为24个月(两年)只有两种情况,一种是双平年,一种是一平年一闰年。注意:先润后平和先平后润是一样的。

如何比较:

  1. 对两个数组都进行判断,只要有一个成立就可以.
  2. 对数组内的月份一次遍历,从第一个月开始比较,如果相同则比较下一个月,如果不同,则第一个月向后移。比如题给数据是 六七八 月。则先将题给六月与数组一月对比,如果不同则依次与二月、三月…比较。六月相同七月不同则同理,类似于比较字符串。
  3. 注意年末12月的后一个月是1月,要及时调整指针指向。

3、代码

#include <iostream>为避免学校oj系统查重抄袭,所有变量在使用时请进行修改
using namespace std;
int NNNNN;//定义一个全局变量n,用来记录有几个月,我只是单纯的不想多传值
int JUD(int month[],int sta[]) {
   
   //判断月份是否相符
	int num=0,a;
	while (num<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值