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

1229. 日期问题

目录

题目链接

一些话

流程

套路

ac代码


题目链接

1229. 日期问题 - AcWing题库


一些话


切入点

// 小明知道这些日期都在1960年1月1日至2059年12月31日。
// 这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的
// 年份也都省略了前两位
// 多个日期按从早到晚排列。

// 读题可知以上四条日期要满足的情况,题目的切入点


流程


// 输出符合条件的情况,本质上和求符合条件情况的数量一样,所以这也是要用枚举的特征之一
// 要求满足多种性质的情况,首先要思考如何降低题目的复杂性,想下枚举什么可以直接满足更多的性质,枚举什么更加简单。
// 比如此题可以枚举合法日期,可以枚举日期区间内,可以枚举输入数据的不同排列。
// 如果枚举合法日期和日期区间内,再判断是否是输入数据的符合题意的排列的话就可以直接满足第四个性质,不需要储存数据然后再排序
// 枚举合法日期的难度较高,所以选择枚举日期区间内,然后再判断日期是否合法,是否符合排列比较简单


套路

日期类问题判断日期是否合法

int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int year,int month,int day){if(!day || months[month] < day && month != 2) return false;if(!month || month > 12) return false;if(month == 2){if(day > 28 + (year % 100 && year % 4 == 0 || year % 400 == 0)) return false;}return true;
}


ac代码

// 8:03-8:17思路错误
//判断日期是否合法不熟
// 10:30~10:35;
// ~11:01accepted// 11:02~11:10 wa1 && accepted
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
// 日期合法判断不够熟练
int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int year,int month,int day){if(!day || months[month] < day && month != 2) return false;if(!month || month > 12) return false;if(month == 2){if(day > 28 + (year % 100 && year % 4 == 0 || year % 400 == 0)) return false;}return true;
}
int main(){int a,b,c;scanf("%d/%d/%d/",&a,&b,&c);//同航班时间的读取技巧for(int i = 19600101;i <= 20591231;i++){int year = i / 10000 % 100;int month = i % 10000 / 100;int day = i % 100;if(a == year && b == month && c == day && check(a,b,c) || a == month && b == day && c == year && check(c,a,b) || a == day && b == month && c == year && check(c,b,a))printf("%d-%02d-%02d\n",i / 10000,month,day);//同航班时间的前导0补齐输出}return 0;
}


http://www.lryc.cn/news/36865.html

相关文章:

  • Java 中的浅拷贝和深拷贝
  • 【java】 java开发中 常遇到的各种难点 思路方案
  • ViewBinding 和 DataBinding的使用
  • HTML+CSS入门
  • 【Vue】vue2导出页面内容为pdf文件,自定义选中页面内容导出为pdf文件,打印选中页面内容,预览打印内容
  • 保姆级使用PyTorch训练与评估自己的Replknet网络教程
  • 1/4车、1/2车、整车悬架PID控制仿真合集
  • 媒体邀约的形式和步骤
  • Unity合批处理
  • Android 进阶——Binder IPC之Native 服务的启动及代理对象的获取详解(六)
  • 企业官网怎么做?
  • FPGA和IC设计怎么选?哪个发展更好?
  • 宁盾目录成功对接Coremail邮箱,为其提供LDAP统一认证和双因子认证
  • Go: struct 结构体类型和指针【学习笔记记录】
  • 量化派递交上市申请,数字经济风口上开启“狂飙”模式
  • Linux:IO接口
  • cron表达式?
  • 日常任务开发系统
  • SQLMap安装教程
  • 【每日一题】蓝桥杯Day06
  • 实体店创业项目 - 开个网咖需要投入多少钱?主要有哪些费用?
  • Linux基础命令-ss显示socket信息
  • 用一个例子告诉你 怎样在spark中创建累加器
  • ICG-Avidin,吲哚菁绿标记的亲和素,应用:生物成像、生物检测、免疫组织化学、微阵列检测制备纳米胶束或微球或其他纳米粒子装载ICG实现成像。
  • Promise的理解和使用
  • TCP
  • Python每日一练(20230310)
  • LeetCode-1590. 使数组和能被 P 整除【前缀和,哈希表】
  • Java核心类库
  • 1110道Java面试题及答案(最新Java初级面试题大汇总)