开启防御罩可以有效防止太空基地受到外部攻击。根据复仇者联盟的要求,需要启动新一轮防御罩设备升级工作。联盟给出了几个时间节点,要求工程师涂鸭梨学姐从中挑选出施工的起始日期和结束日期,并按期实施升级工程。但,涂鸭梨学姐忙着完成v2定期布置的C语言,为了防止脱发,她决定挑选出让施工期最长的两个日期。
Input
第一行输入一个整数N(N >= 2),表示可以挑选的日期数量
第二行输入N个日期,空格间隔。其中每个日期的格式为点分年月的形式,如:2019.6表示2019年6月,2020.12表示2020年12月(年的范围:2000-3000,月的范围:1-12)
Output
最长施工期的月份数量
Sample Input
3
2019.6 2018.7 2020.12
Sample Output
29
Hint
3个日期供选择
选择最小日期作为起始日期:2018.7
选择最大日期作为结束日期:2020.12
计算月份差为29个月
我写的代码
#include
int main()
{
int N, year[1000], month[13], i, j, total = 0, q, k = 0, t = 0;
scanf("%d", &N);
if (N >= 2)
{
for (i = 0; i < N; i++)
{
scanf("%d.%d", &year[i], &month[i]);
}
for (i = 0; i < N; i++)
if (year[i] >= 2000 && year[i] <= 3000 && month[i] >= 1 && month[i] <= 12)
{
for (i = 0; i < N; i++)
{
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (year[i] < year[j])
{
k = year[i]; year[i] = year[j]; year[j] = k;
t = month[i]; month[i] = month[j]; month[j] = t;
}
}
}
if (year[N - 1] - year[0] >= 2)
{
q = year[N - 1] - year[0] - 1;
total = q * 12 + (12 - month[0]) + month[N - 1]; //month n-1为最大数
}
else if (year[N - 1] - year[0] == 1)
{
total = (12 - month[0]) + month[N - 1];
}
else if (year[N - 1] - year[0] == 0)
{
total = month[N - 1] - month[0];
}
printf("%d", total);
}
}
}
return 0;
}