当前位置: 首页 > news >正文

蓝桥杯12. 日期问题

日期问题

原题目链接

题目描述

小明正在整理一批历史文献。这些历史文献中出现了很多日期。

小明知道这些日期都在 1960 年 1 月 1 日2059 年 12 月 31 日 之间。

令小明头疼的是,这些日期采用的格式非常不统一:

  • 有的采用 年/月/日
  • 有的采用 月/日/年
  • 有的采用 日/月/年

更加麻烦的是,年份省略了前两位,例如:

02/03/04

它可能表示以下三种日期:

  • 2002 年 03 月 04 日 (年/月/日)
  • 2004 年 02 月 03 日 (日/月/年)
  • 2004 年 03 月 02 日 (月/日/年)

输入描述

一个日期字符串,格式为 AA/BB/CC,其中 0 ≤ A, B, C ≤ 9,即每个字段均为两位数字。


输出描述

输出若干个不相同的有效日期(在 1960-01-012059-12-31 范围内),每个日期一行,格式为:

yyyy-MM-dd

多个日期按从早到晚的时间顺序输出。


输入样例

02/03/04

输出样例

2002-03-04
2004-02-03
2004-03-02

c++代码

#include<bits/stdc++.h>using namespace std;int arr[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
unordered_set<string> st;void valid(string a, string b, string c) {string d = "19";d += a;int year = stoi(d), key = 0, month = stoi(b), day = stoi(c);if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) key = 1;arr[2] += key;if (year >= 1960 && year <= 2059 &&month >= 1 && month <= 12 &&day >= 1 && day <= arr[month] &&st.find(d + "-" + b + "-" + c) == st.end()) st.insert(d + "-" + b + "-" + c);arr[2] -= key;d = "20", d += a, key = 0, year = stoi(d);if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) key = 1;arr[2] += key;if (year >= 1960 && year <= 2059 &&month >= 1 && month <= 12 &&day >= 1 && day <= arr[month] &&st.find(d + "-" + b + "-" + c) == st.end()) st.insert(d + "-" + b + "-" + c);arr[2] -= key;
}int main() {string str, a, b, c;cin >> str;a = str.substr(0, 2), b = str.substr(3, 2), c = str.substr(6, 2);valid(a, b, c), valid(c, a, b), valid(c, b, a);vector<string> ans;for (string s : st) ans.push_back(s);sort(ans.begin(), ans.end());for (string s : ans) cout << s << endl;return 0;
}//by wqs

算法解析

注意这题需要判断闰年,然后就是暴力模拟就行了。

http://www.xdnf.cn/news/17119.html

相关文章:

  • 全面解析IPv6:从理论到实践(以H3C配置为例)
  • 搜索插入位置--LeetCode
  • Linux中find和grep的区别
  • 常见但是有挑战的效果组件鸿蒙版
  • 视频分析设备平台EasyCVR化解高速服务区管理难题,打造全方位智能安防监控方案
  • 第 5 期(进阶版):训练第一个 DDPM 模型(使用 CIFAR-10 数据集)
  • 服务器上有conda环境 退出conda环境 再安装uv包管理器这样子就不会有冲突吗
  • MQ基础篇
  • LoRA(Low - Rank Adaptation,低秩自适应 )微调技术改进创新点
  • 并发设计模式实战系列(1):半同步/半异步模式
  • day45——非递减数列(LeetCode-665)
  • QT项目打包
  • Multi Agents Collaboration OS:文档合规性及质量检测助手设计及实践
  • 【KWDB 创作者计划】_算法篇---Stockwell变换
  • OpenAI重返巅峰:o3与o4-mini引领AI推理新时代
  • 面试经验杂谈
  • onlyoffice关闭JWT后依然报错如何解决?
  • Maven 简介(图文)
  • 文件系统的npu和内核的npu有什么区别
  • 双层Key缓存
  • 【dify实战】agent结合deepseek实现基于自然语言的数据库问答、Echarts可视化展示、Excel报表下载
  • 数据结构--并查集-高效处理连通性问题
  • windows测试
  • Android 13 关闭屏幕调节音量大小
  • LabVIEW油气井井下集成监测系统
  • 神经网络优化 - 小批量梯度下降
  • 消防营区管控:从智能仓储、装备管理、应急物资调用等多维度出发
  • 每日一题(8) 求解矩阵最小路径和问题
  • android的配置检查 查看安卓设备配置
  • LeetCode:DFS综合练习