ETH官方钱包

切換
舊版
前往
大廳
主題

ZeroJudge - e544: 00612 - DNA Sorting 解題心得

Not In My Back Yard | 2019-11-26 20:28:25 | 巴幣 2 | 人氣 449

題目連結(jié):


題目大意:
給定一正整數(shù) T ,代表有 T 筆的測試資料。每筆測資開頭有一列空白列,接著的一列給定兩正整數(shù) n 、 m (n ≦ 50 , m ≦ 100),代表接下來有 m 列輸入、每列輸入給定一長度為 n 的字串(字串只包含大寫字母)。

現(xiàn)在定義一種度量「反轉(zhuǎn)」(inversions),代表字串的排序程度。「反轉(zhuǎn)」的值為對於字串裡每個(gè)字元,在字典序上大於多少個(gè)位於其右邊的字元。

例如字串 DAAEBC ,D 大於 A 、 A 、 B 、 C 四個(gè)字元,而 E 大於 C 。因此,此字串的「反轉(zhuǎn)」為 5 。

請將給定的 n 個(gè)字串以反轉(zhuǎn)度量小到大排序(也就是從較有排序的字串到較無排序的字串)。如果兩字串反轉(zhuǎn)的度量相等,則以輸入的順序排序。



範(fàn)例輸入:
1

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT


範(fàn)例輸出:
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA


解題思維:
用一個(gè)結(jié)構(gòu)(Struct)把字串的內(nèi)容、輸入的順序以及其反轉(zhuǎn)度量都存起來。反轉(zhuǎn)度量的求法單純就是以看每個(gè)位置大於幾個(gè)右邊的字元,把數(shù)量全部加起來即可獲得。

接著就是依據(jù)題目的條件排序即可。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創(chuàng)作回應(yīng)

更多創(chuàng)作