实验七 数组(二)---小希的新工作
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个月(两年)只有两种情况,一种是双平年,一种是一平年一闰年。注意:先润后平和先平后润是一样的。
如何比较:
- 对两个数组都进行判断,只要有一个成立就可以.
- 对数组内的月份一次遍历,从第一个月开始比较,如果相同则比较下一个月,如果不同,则第一个月向后移。比如题给数据是 六七八 月。则先将题给六月与数组一月对比,如果不同则依次与二月、三月…比较。六月相同七月不同则同理,类似于比较字符串。
- 注意年末12月的后一个月是1月,要及时调整指针指向。
3、代码
#include <iostream>为避免学校oj系统查重抄袭,所有变量在使用时请进行修改
using namespace std;
int NNNNN;//定义一个全局变量n,用来记录有几个月,我只是单纯的不想多传值
int JUD(int month[],int sta[]) {
//判断月份是否相符
int num=0,a;
while (num<

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

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



