版权声明:本文为博主原创文章,未经博主允许不得转载。                    https://blog.csdn.net/qq_33531813/article/details/79516258              </div><div id="content_views" class="markdown_views"><!-- flowchart 箭头图标 勿删 --><svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><h2 id="蓝桥杯历届试题日期问题">蓝桥杯历届试题——日期问题</h2>

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;//判断 year 是否是闰年
//默认 year已经是大于零的数
bool isLeapYear(int year)
{if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return true; return false;
}//对传来的3个参数是否能构成一个日期  yy-mm-dd
//规定:
//     yy∈[00,59]  yy = 20yy
//     yy∈[60,99]  yy = 19yy
//     即yy无需判断,默认合法,但某种情况下需要判断yy是闰年/平年。
//     mm∈[01,12]  否则不合法
//     dd∈[01,31]  否则不合法
//        特别地:
//               dd∈[29,31]  需要根据月份、闰年/平年进行讨论
bool isLegal (int yy, int mm, int dd)
{if(mm > 12 || mm <= 0) return false;  // 月份不合法if(dd >31 || dd <= 0) return false;   // 日期不合法if(dd <29) return true;    // 日期小于29,必定合法else{// dd 为31的情况下, 2,4,6,9,11月是不可能的 if(dd == 31 && (mm == 2 || mm == 4 || mm == 6|| mm ==9 || mm == 11)) return false; // dd 为30的情况下,2月是不可能的 if(dd == 30 && mm == 2) return false;// dd 为29的情况下,2月的平年是不可能的if(dd == 29 && mm == 2) {int year = (yy < 60)? 2000 + yy : 1900 + yy;if(!(isLeapYear(year))) return false;}} return true;
}struct Date
{int date[3]; // 0-yy; 1-mm; 2-ddbool operator < (const struct Date dt) const{for(int i = 0; i < 3; i++){if(date[i] > dt.date[i]) return false;else if(date[i] < dt.date[i]) return true;}return false;}
}legalDate[3];  int sum = 0; //记录实际共有几个合法的日期 //把合法的日期加入legalDate
void addLegalDate(int y, int m, int d)
{int year = (y < 60)? 2000 + y : 1900 + y;for(int i = 0; i < sum; i++){//避免出现重复的日期 if(legalDate[i].date[0] == year && legalDate[i].date[1] == m && legalDate[i].date[2] == d)return;}legalDate[sum].date[0] = year;legalDate[sum].date[1] = m;legalDate[sum].date[2] = d;sum++;
}int main()
{int date[3];    scanf("%d/%d/%d", &date[0], &date[1], &date[2]);    //穷举3种可能的情况     // 年/月/日 if(isLegal(date[0], date[1], date[2])){addLegalDate(date[0], date[1], date[2]);}// 月/日/年 if(isLegal(date[2], date[0], date[1])){addLegalDate(date[2], date[0], date[1]);}// 日/月/年 if(isLegal(date[2], date[1], date[0])){addLegalDate(date[2], date[1], date[0]);}//按日期先后排序 sort(legalDate, legalDate + sum);for(int i = 0; i < sum; i++){printf("%d-%02d-%02d\n", legalDate[i].date[0], legalDate[i].date[1], legalDate[i].date[2]);}return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
                 <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet"></div>

蓝桥杯 - 历届试题 - 日期问题相关推荐

  1. [蓝桥杯][历届试题]国王的烦恼(反向+并查集)

    问题 1435: [蓝桥杯][历届试题]国王的烦恼 时间限制: 1Sec 内存限制: 128MB 提交: 802 解决: 213 题目描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了 ...

  2. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  3. 二分搜索,POJ2456,NYOJ 914, 区间移位-蓝桥杯-历届试题

    二分搜索是不断缩减可能解的范围来得到最优解, 因为每次是折半, 所以指数爆炸有多快,这个效率就有多高 POJ2456为例, 传送门 简而言之, 就是将牛之间的距离的最小值最大化. #include&l ...

  4. 蓝桥杯历届试题代码参考

    蓝桥杯历届试题代码参考 历届试题 核桃的数量 打印十字图 带分数 剪格子 错误票据 翻硬币 连号区间数 买不到的数目 大臣的旅费 幸运数 横向打印二叉树 危险系数 网络寻路 高僧斗法 格子刷油漆 农场 ...

  5. 问题 1433: [蓝桥杯][历届试题]危险系数(并查集and暴力)

    问题 1433: [蓝桥杯][历届试题]危险系数 时间限制: 1Sec 内存限制: 128MB 提交: 123 解决: 39 题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的 ...

  6. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  7. 历届试题+九宫重排+java_蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)...

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...

  8. 蓝桥杯 历届试题 拉马车 java

    Prev43 历届试题 拉马车 题目如下: 问题描述:小的时候,你玩过纸牌游戏吗?有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友.其规则简述如下:假设参加游戏的小朋友是A和 ...

  9. 蓝桥杯历届试题 剪格子 (DFS)

    http://lx.lanqiao.cn/problem.page?gpid=T27 历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 如下图所示,3 ...

最新文章

  1. 高糊视频秒变4K,速度快了9倍!东南大学提出新的视频超分辨率系统
  2. (转)深入理解SP、LR和PC
  3. 【知识总结】Java类初始化顺序说明
  4. 字符串相似度算法——Levenshtein Distance算法
  5. 了解Callable和Spring DeferredResult
  6. 信息技术与计算机文化的问题,信息技术与计算机文化
  7. Markdown 添加emoji
  8. 聊城初中计算机考试成绩查询,聊城市初中学业水平考试成绩查询系统入口2021...
  9. C#窗体-个人简历生成(自己设计并编写一个 Windows 应用程序,要求用到TextBox、GroupBox、RadioButton )
  10. 深度学习Hello World --- 手写体识别 实战
  11. 青果教务处系统爬虫(java)
  12. 均匀裁剪图片(3000X3000到1000X1000)
  13. “拼多多”被薅的问题出在哪儿?损失将如何买单?
  14. Flink在监控流计算中的应用
  15. 用C语言解“厘米换算英尺英寸”问题
  16. SQL-DAY 7(SQL查询语句的应用案例:汽车新销售)
  17. 【JZOJ】WZK打雪仗
  18. 第一天之导入Vuetify的坑
  19. Canvas 从 0 到 1 -- 开发 2D 游戏《保卫家园》-- 【上篇】
  20. Jquery 对 身份证号码的验证 (15/18位)

热门文章

  1. MySQL关闭Enterprise Server源码
  2. 一个前端框架应该有的一些公共函数
  3. (Kali)BackTrack-linux安全***测试系统盘
  4. CISCO的GLBP(网关负载均衡协议)
  5. 自己的利益,还是用户的名义?
  6. 十二之续、快速排序算法的深入分析
  7. ps -ef |grep
  8. dubbo服务的运行方式
  9. getActionBar()报空指针异常
  10. [转载] Java复制对象与集合工具类