演算法競賽 day14(日期問題)

2021-10-08 18:05:30 字數 1935 閱讀 2486

我覺得吧,很多時候,人啊都是不順心的,沒必要去惆悵什麼的~

題目描述

小明正在整理一批歷史文獻。這些歷史文獻**現了很多日期。小明知道這些日期都在2023年1月1日至2023年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有採用年/月/日的,有採用月/日/年的,還有採用日/月/年的。更加麻煩的是,年份也都省略了前兩位,使得文獻上的乙個日期,存在很多可能的日期與其對應。比如02/03/04,可能是2023年03月04日、2023年02月03日或2023年03月02日。給出乙個文獻上的日期,你能幫助小明判斷有哪些可能的日期對其對應嗎?

輸入

乙個日期,格式是"aa/bb/cc"。 (0 <= a, b, c <= 9)

輸出

輸出若干個不相同的日期,每個日期一行,格式是"yyyy-mm-dd"。多個日期按從早到晚排列。

樣例輸入

02/03/04

樣例輸出

2002-03-04

2004-02-03

2004-03-02

分析

剛開始處理這題的時候,還真的找不到什麼思路,但其實也沒有那麼難,首先大於60的+1900,小於60的+2000,其次對年月日加權計數,然後根據題目意思,分三類並存入陣列,sort排序後再輸出,同時捨去相同日期的情況。

//#include

#include

#include

#include

using

namespace std;

intans

(int y,

int m,

int d)

else

return y*

100+m*

10+d;

}int

main()

if(ans(d,y,m)!=0

)if(ans

(d,m,y)!=0

)sort

(a,a+t)

;int tmp=0;

for(

int i=

0;i)printf

("%d-%02d-%02d\n"

,a[i]

/100

,a[i]/10

%10,a[i]%10

); tmp=a[i];}

return0;

}

在以上**後進行二次加工,得到滿分ac**:

//#include

#include

#include

#include

using

namespace std;

int day[2]

[13]=

,};intf(

int y)

//判斷閏年

intans

(int y,

int m,

int d)

//加年份

intmain()

if(ans(d,y,m)!=0

)if(ans

(d,m,y)!=0

)sort

(a,a+t)

;int tmp=0;

for(

int i=

0;i)printf

("%d-%02d-%02d\n"

,a[i]

/10000

,a[i]

%10000

/100

,a[i]

%100);

tmp=a[i];}

return0;

}

二次加工後的**和第一次的**相比多了一些東西也做了一些調整。

每日演算法 day 14

那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.2.26 整體思想是 記憶化 dfs 記憶化 將搜尋過程中某一塊的內容直接記錄下來...

1 2 日期類問題

二 day of week 一 日期差值 1 題目和要求 時間限制 1s,記憶體限制 32mb,特殊判題 否 2 總結 1 閏年的判斷規則 當年數不能被100整除且能被4整除則為閏年,或者其能被 400整除時也是閏年。某種情況下,可能出現兩個閏年相隔 8 年。2 可以採用巨集定義函式的方式判斷是否是...

藍橋杯2017 日期問題

小明正在整理一批歷史文獻。這些歷史文獻 現了很多日期。小明知道這些日期都在1960年1月1日至2059年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有採用年 月 日的,有採用月 日 年的,還有採用日 月 年的。更加麻煩的是,年份也都省略了前兩位,使得文獻上的乙個日期,存在很多可能的日...