AcWing 1229. 日期问题 解题思路及代码

先贴个题目:

以及原题链接:1229. 日期问题 - AcWing题库icon-default.png?t=N7T8https://www.acwing.com/problem/content/1231/

 这题其实和之前的回文日期相似,可以直接暴力枚举,然后得解,放个小片段:

for (int date = 19600101; date <= 20591231; date ++ ){int year = date / 10000, month = date % 10000 / 100, day = date % 100;if (check_valid(year, month, day)){if (year % 100 == a && month == b && day == c || month == a && day == b && year % 100 == c || day == a && month == b &&year % 100 == c)           printf("%d-%02d-%02d\n", year, month, day);}}

 然后我觉得计算不够方便,次数有点多,优化!其实这个题可以简化成纯暴力枚举判断是否合法,给大家看看我的原码:

#include <iostream>
#include <algorithm>
#include<cstring>
using namespace std;struct Date
{int year, month, day;
};bool operator<(Date &a, Date &b)
{if (a.year < b.year)return true;else if (a.year == b.year){if (a.month < b.month)return true;else if (a.month == b.month){if (a.day < b.day)return true;elsereturn false;}elsereturn false;}elsereturn false;
}Date date[20];
bool legal[20];
int a[3], days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int year)
{if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)return true;elsereturn false;
}
int main()
{memset(legal, true, sizeof(legal));int cnt = 0;scanf("%d/%d/%d", &a[0], &a[1], &a[2]);for (int i = 0; i < 3; ++i)for (int j = 0; j < 3; ++j)for (int k = 0; k < 3; ++k){int year = a[i], month = a[j], day = a[k];if (i == j || j == k || i == k || i == 1 || j == 2)continue;if (year >= 60)year += 1900;elseyear += 2000;if (month < 1 || month > 12)continue;if (month != 2)if (day < 1 || day > days[month])continue;if (month == 2 && check(year) == true)if (day < 1 || day > 29)continue;if (month == 2 && check(year) == false)if (day < 1 || day > 28)continue;date[cnt].year = year;date[cnt].month = month;date[cnt].day = day;cnt++;}sort(date, date + cnt);for (int i = 0; i < cnt - 1; ++i){if (date[i].year == date[i + 1].year && date[i].month == date[i + 1].month && date[i].day == date[i + 1].day)legal[i] = false;}for (int i = 0; i < cnt; ++i)if (legal[i])printf("%d-%02d-%02d\n", date[i].year, date[i].month, date[i].day);return 0;
}

其实代码会稍微比纯暴力枚举长很多,但确实计算速度快,由于要按时间先后输出,创建结构体数组以及重载<和sort实现排序功能。以及注意不是每个位置的数都可以表示日月年,所以判断条件较为复杂。但yysy,写出来的感觉挺爽的()。

by———2024.2.28刷题记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2822310.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

用node写后端环境运行时报错Port 3000 is already in use

解决方法:关闭之前运行的3000端口,操作如下 1.WindowR输入cmd确定,打开命令面板 2.查看本机端口详情 netstat -ano|findstr "3000" 3.清除3000端口 taskkill -pid 41640 -f 最后再重新npm start即可,这里要看你自己项目中package.joson的启动命令是什…

机器学习笔记 YOLOv9模型相关论文简读

一、YOLOv9简述 自 2015 年 Yolov1 推出以来,已经出现了多个版本。 基于Darknet的YOLOv2、YOLOv3和YOLOv4 YOLOv5 YOLOv8 基于 Ultralytics。 SCALED-YOLOv4 使用 Pytorch 而不是 Darknet。 YOLOR是YOLOv4的改进。 YOLOX是YOLOv3的改进。 YOLOv6专注于工业应用。 YOLOv7 来自 …

重拾前端基础知识:CSS

重拾前端基础知识&#xff1a;CSS 前言选择器简单选择器属性选择器组合选择器 插入CSS内嵌样式&#xff08;Inline Style&#xff09;内部样式&#xff08;Internal Style&#xff09;外部样式&#xff08;External Style&#xff09; 层叠颜色背景颜色文本颜色RGB 颜色HEX 颜色…

排序(2)——希尔排序

希尔排序&#xff08;缩小增量排序&#xff09; 基本思想 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&…

[LeetCode][147]对链表进行插入排序

题目描述 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 提示&#xff1a; 列表中的节点数在 [1, 5000]范围内 -5000 < Node.val < 5000 普适的注意点 循环条件的书写顺序 比如 while(current->val>iNod…

蓝桥杯倒计时 43天 - 前缀和

思路&#xff1a;如果用n^2复杂度暴力会超时。nlogn 可以&#xff0c;利用前缀和化简&#xff0c;提前存储某个位置前的每个石头搬运到该位置和每个石头后搬运到该位置的前缀和On最后直接输出 On。排序花 nlogn #include<bits/stdc.h> using namespace std; typedef pai…

四川尚熠电子商务有限公司电商服务领域的佼佼者

在数字化浪潮席卷全球的今天&#xff0c;电子商务已成为推动企业转型升级、拓展市场渠道的重要力量。四川尚熠电子商务有限公司&#xff0c;作为一家专注于抖音电商服务的公司&#xff0c;凭借其独特的服务模式和创新的营销策略&#xff0c;在激烈的市场竞争中脱颖而出&#xf…

JVM运行时数据区——本地方法接口和本地方法栈

1、本地方法接口 虽然Java语言使用非常广泛&#xff0c;但是有些事务Java仍然无法处理。例如线程相关的功能&#xff0c;在线程类当中就有很多本地方法接口。那么Java如何来处理这些问题呢&#xff1f;Java设计师提出了一种解决方案就是本地方法接口。本贴将会讲解本地方法接口…

vscode 引入外部依赖包

背景 我要在vscode中写一些antlr代码生成的cpp代码&#xff0c;但是在引入头文件#include "antlr4-runtime.h"的时候&#xff0c;出现报错&#xff0c;显示没有这个头文件&#xff0c;显然这是我们没有导入相关的包&#xff0c;因此我首先尝试了将antlr4的依赖源码在…

把简单留给用户,把复杂交给 AI

2024 年伊始&#xff0c;Kyligence 联合创始人兼 CEO 韩卿&#xff08;Luke&#xff09;分享了对 AI 与数据行业的一些战略思考&#xff0c;以及对中美企业服务市场的见解&#xff0c;引发业界同仁的广泛共鸣。正值 Kyligence 成立 8 周年&#xff0c;恰逢 AI 技术应用风起云涌…

SpringBoot+aop实现主从数据库的读写分离

读写分离的作用是为了缓解写库&#xff0c;也就是主库的压力&#xff0c;但一定要基于数据一致性的原则&#xff0c;就是保证主从库之间的数据一定要一致。如果一个方法涉及到写的逻辑&#xff0c;那么该方法里所有的数据库操作都要走主库。 一、环境部署 数据库&#xff1a;…

二叉搜索树在线OJ题讲解

二叉树创建字符串 我们首先进行题目的解读&#xff1a; 大概意思就是用&#xff08;&#xff09;把每个节点的值给括起来&#xff0c;然后再经过一系列的省略的来得到最后的结果 大家仔细观察题目给出的列子就可以发现&#xff0c;其实这个题目可以大致分为三种情况&#xff1…

【OpenGL编程手册05】纹理渲染

目录 一、说明二、概述三、纹理环绕方式四、纹理过滤五、多级渐远纹理六、加载与创建纹理七、生成纹理八、应用纹理九、纹理单元练习 一、说明 我们已经了解到&#xff0c;我们可以为每个顶点添加颜色来增加图形的细节&#xff0c;从而创建出有趣的图像。但是&#xff0c;如果…

文本多分类

还在用BERT做文本分类&#xff1f;分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】_ernir 文本分类-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

Linux--Redis 群集

9.1.1 关系型数据库与非关系型数据库 数据库按照其结构可以分为关系型数据库与其他数据库&#xff0c;而这些其他数据库我们将其统称为非 关系型数据库。Redis数据库是一个非关系型数据库。 1、关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型基础上…

MATLAB练习题:排队论问题的模拟

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 下面我们来看一道排队论的题目。假设某银行工作时间内只有一个…

硬盘坏了怎么把数据弄出来?数据恢复方法推荐

在数字化时代电脑硬盘中的数据承载着我们的工作成果、生活回忆和珍贵资料。然而一旦硬盘出现故障&#xff0c;数据的安全就变得岌岌可危。那么当电脑硬盘出现问题时&#xff0c;我们真的无法挽回那些重要数据了吗&#xff1f;答案是&#xff1a;不一定&#xff01;本文将为您介…

【GPU驱动开发】- AST简介

前言 不必害怕未知&#xff0c;无需恐惧犯错&#xff0c;做一个Creator&#xff01; AST&#xff0c;抽象语法树&#xff0c;是一种包含丰富语义信息的格式&#xff0c;其中包括类型、表达式树和符号等。 TranslationUnitDecl&#xff1a;该类表示一个输入源文件 ASTContext&…

Socket网络编程(六)——简易聊天室案例

目录 聊天室数据传输设计客户端、服务器数据交互数据传输协议服务器、多客户端模型客户端如何发送消息到另外一个客户端2个以上设备如何交互数据&#xff1f; 聊天室消息接收实现代码结构client客户端重构server服务端重构自身描述信息的构建重构TCPServer.java基于synchronize…

Android 12.0 framework关于systemUI定制之导航栏透明背景的功能实现

1.概述 在12.0的系统rom产品定制化开发中,在对于系统原生SystemUI的导航栏背景在沉浸式导航栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下导航栏的背景也是会改变的,所以由于产品开发需要 要求需要设置导航栏背景为透明的,所以就需要在Activity创建的时…