切換
舊版
前往
大廳
主題

ZeroJudge - e977: 11962 - DNA II 解題心得

Not In My Back Yard | 2020-09-17 23:52:29 | 巴幣 2 | 人氣 164

題目連結:


題目大意:
第一列給定一正整數 T (T ≦ 100),代表有 T 筆測試資料,每筆佔一列。每列給定一個字串(只由 A 、 C 、 G 、 T 四種字母組成,且長度不超過 30 個字元),代表一串 DNA 序列。

請輸出該 DNA 序列之字串長度以及序號,輸出格式參見範例輸出。

DNA 的序號編號方式如下,以長度 = 2 的 DNA 序號為例:
序號從 0 開始,將所有可能的、長度為 2 的 DNA 序列以字典序之順序列出為下
{ AA; AC; AG; AT; CA; CC; CG; CT; GA; GC; GG; GT; TA; TC; TG; TT }
因此序號依序為 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 、 10 、 11 、 12 、 13 、 14 、 15 。



範例輸入:
範例輸入一:
1
GCTA

範例輸入二:
3
AC
ATA
TAGCAGCAGCAGCGAA

範例輸入三:
4
GGGA
TTACG
CCGGTT
GACACAC


範例輸出:
範例輸出一:
Case 1: (4:156)

範例輸出二:
Case 1: (2:1)
Case 2: (3:12)
Case 3: (16:3374617184)

範例輸出三:
Case 1: (4:168)
Case 2: (5:966)
Case 3: (6:1455)
Case 4: (7:8465)


解題思維:
以範例輸入一的測資 GCTA 為例:
GCTA
從第一個字母可以看到,在此之前的 AXXX  ~ CXXX 是排在前面的(根據字典序,其中的「X」代表 A 、 C 、 G 、 T 四個字元的任一一個)
因此,我們可以看到該 DNA 序列的序號至少為 2 × 4 ^ 3 ,其中 2 來自於 A 、 C 兩個開頭字元、 4 來自於四種字母、 3 則來自於有三個「X」(也就是有 3 個欄位可以自由放四種字母)。也就是序號至少為 128 。

GCTA
類似於上面的思路,可以看到 GAXX 是排在它前面的。因此序號至少為 128 + 1 × 4 ^ 2 = 144。

GCTA
同上,前面有 GCAX 、 GCCX 、 GCGX 。因此序號最少是 144 + 3 × 4 ^ 1 = 156

GCTA
最後,它的前面也沒有其他 DNA 序列了。因此序號即為 156 。

而其他的測資也可以此類推。




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

創作回應

更多創作