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://www.pswp.cn/news/713231.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713231.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713231.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UI自動化-(web端下拉選擇框彈出框滾動條操作-實操入門)

1、下拉選擇框操作 在 UI 自動化中,操作下拉選擇框可以通過以下步驟進行: 定位下拉選擇框元素:通過適當的元素定位方法,找到下拉選擇框的元素。打開下拉框:例如通過點擊(.click)來操作下拉框元素打開下拉框。選擇選項:可以通過以下幾種方式選擇下拉框中的選項:根據索…

uni-app 頁面跳轉動畫

API的方式 uni.navigateTo({url: ../test/test,animationType: pop-in,animationDuration: 200 }); uni.navigateBack({delta: 1,animationType: pop-out,animationDuration: 200 });pages.json中配置的方式 "style": {"app-plus": {"animationType…

【代碼學習】pytorch_lightning

在Follow別人工作時&#xff0c;經常發現別人使用pytorch_lightning模板&#xff0c;比如這篇分布式信源信道聯合編碼工作就是用了lightning-hydra-template模板&#xff0c;有必要學習下這個框架。

高級語言期末2009級A卷(計算機學院)

1.編寫bool函數&#xff0c;判定給定的正整數n&#xff0c;M是否滿足&#xff1a;M為n的質因數&#xff08;能整除n的質數&#xff09; #include <stdio.h> #include <stdbool.h> #include <math.h>bool Isprime(int n) {if(n<1)return false;for(int i2…

時隔n年再度會看Vue,Git

時隔n年再度會看Vue,Git 曾經滄海難為水&#xff0c;除卻巫山不是云。不知道這句話用在這里合不合適&#xff0c;好多東西在記憶中都淡化了。但是互聯網確是有記憶的。研究以前項目的時候&#xff0c;翻看到gitee碼云上托管的項目&#xff0c;就像是自己的孩子重新又回來了一樣…

突破編程_C++_面試(異常處理)

面試題 1 &#xff1a;什么是異常處理&#xff1f;為什么需要它&#xff1f; 在C中&#xff0c;異常處理是一種處理程序運行時錯誤的機制。它允許程序員在程序的某個部分中定義和處理可能會出現的異常情況&#xff0c;即“異常”。這些異常情況通常是由錯誤條件、非法操作或其…

Laravel Octane 和 Swoole 協程的使用分析

之前在工作中使用 Laravel Octane 的 concurrently 處理并發時&#xff0c;發現在隊列和定時任務中不會觸發并發效果。經過分析&#xff0c;作了如下猜測&#xff1a;隊列和定時任務都屬于一個獨立的進程&#xff0c;與 Octane 服務無關&#xff0c;而 Octane concurrently 恰恰…

C#高級:DataGridView的詳解

一、每條數據增加一個按鈕&#xff0c;點擊輸出對應實體 請先確保正確添加實體的名稱和文本&#xff1a; private void button6_Click(object sender, EventArgs e) {//SQL查詢到數據&#xff0c;存于list中List<InforMessage> list bll.QueryInforMessage();//含有字段…

數據頁和緩存頁(BufferPool)

1. 數據頁&#xff08;dataPage&#xff09; 什么是數據頁&#xff1f; 數據頁是 MySQL 存儲引擎在磁盤和內存之間傳輸數據的基本單位&#xff0c;默認大小為16KB。 數據頁的結構&#xff1a; 表頭&#xff1a;儲存與頁相關的元信息&#xff0c;比如&#xff0c;頁號&#…

buuctf_reverse_新年快樂+內涵的軟件

新年快樂 題目&#xff1a;新年快樂.exe 這玩意有殼&#xff01;我去down了upx脫殼 開始放exeinfope的圖片沒截&#xff0c;我記得下載完upx后exeinfoPE顯示還不一樣。留了一張脫殼的實驗圖片&#xff1a; 然后放IDA 我是筆記本鍵盤&#xff0c;shiftFnF12轉字符串 誒呦&…

flutter 安裝流程

flutter文檔 0.安裝flutter https://flutter.cn/docs/get-started/install/windows/desktop?tabdownload 1.jdk 安裝地址 Java Archive | Oracle 2. android studio 下載地址 https://developer.android.com/studio 3.Visual Studio下載地址 下載 Visual Studio Tools …

C++之map

1、map介紹 map是C STL的一個關聯容器&#xff0c;它提供一對一的數據處理能力。其中&#xff0c;各個鍵值對的鍵和值可以是任意數據類型&#xff0c;包括 C 基本數據類型&#xff08;int、double 等&#xff09;、使用結構體或類自定義的類型。 第一個可以稱為關鍵字(key)&…

docker構建hyperf環境

一&#xff0c;構建hyperf 鏡像 官網git https://github.com/hyperf/hyperf-docker 使用dockerfile構建鏡像 根據需要這里我使用8.1 swoole版本的鏡像 在/home/hyperfdocker 目錄中新建一個Dockerfile文件&#xff0c;將這個git上的Dockerfile內容復制粘貼進去 docker build…

HBase總結

基本介紹 特點(高可靠、高性能、面向列、可伸縮) 非關系型數據庫大數據實時處理 表規模達數十億行及數百萬列讀、寫訪問可實時分布式存儲系統 HDFS(Hadoop Distributed File System)文件存儲ZooKeeper作為協同服務列存儲 優點:有利于單列數據查詢缺點:整行讀取時效率較慢,…

毫末智行開年融資,揭幕了自動駕駛最后的賽點

毫末智行日前官宣拿到的超億元B1輪融資&#xff0c;在行業引起了不小的關注。 一方面是信心問題&#xff0c;自動駕駛從早期拼技術到去年拼量產落地&#xff0c;創業公司們的聲量此消彼長&#xff0c;有人領先也有人掉隊&#xff0c;但市場的態度都以謹慎為主&#xff0c;甚至…

Android ANR 日志分析定位

ANR 是 Android 應用程序中的 "Application Not Responding" 的縮寫&#xff0c;中文意思是 "應用程序無響應"。這是當應用程序在 Android 系統上運行時&#xff0c;由于某種原因不能及時響應用戶輸入事件或執行一個操作&#xff0c;導致界面無法更新&…

Kubernetes(k8s第二部分)

資源清單相當于劇本 什么是資源&#xff1a; k8s中所有的內容都抽象為資源&#xff0c;資源實例化后&#xff0c;叫做對象。 1.K8S中的資源 集群資源分類 名稱空間級別&#xff1a; kubeadm k8s kube-system kubectl get pod -n default 工作負載型資源&#xff0c;&a…

指針篇章-(1)

指針&#xff08;1&#xff09;學習流程 —————————————————————————————————————————————————————————————————————————————————————————————————————————————…

Linux:使用nslookup和dig查詢DNS記錄信息

nslookup nslookup&#xff08;Name Server Lookup&#xff09;用于從 DNS 服務器查詢域名、IP 或其他 DNS 記錄信息 示例 查詢域名信息 $ nslookup baidu.comServer: 114.114.114.114 Address: 114.114.114.114#53Non-authoritative answer: Name: baidu.com Add…

springcloud項目,無法在Sentinel Dashboard查看到服務的訪問監控信息【解決方法】

1.問題場景 因為warehouse子項目的前端未開發&#xff0c;所以只能通過postman測試接口訪問&#xff1b; 2.解決方法 package org.sharetek.common.security.config;import cn.dev33.satoken.SaManager; import cn.dev33.satoken.filter.SaServletFilter; import cn.dev33.sat…