2020年第十八届西电程序设计竞赛网络预选赛之Problem C 没人比我更懂 COVID-19
題目描述
現在,一種高度危險的病毒襲擊了學園都市,人們陷入危難之中。
作為藍星上最無所不知的人,你對病毒基因了如指掌。為了拯救即將廢棄的
校賽,行星防御理事會找到了你。
現在你必須找出病毒所有可能的變異情況,以抵御病毒的攻擊。
給定 n 個病毒堿基序列片段,由大寫字母 ATCG 表示,長度均為 m。
你發現對于兩串堿基序列,它們交叉變異的結果僅取決于對應位置上的堿
基,規律如下:
× A T C G
A A T C G
T T A G C
C C G A T
G G C T A
例如,序列 AACGT 與 TACAG 交叉將得到 TAAGC。
你想知道,選取任意個病毒并按任意順序交叉,總共能獲得多少種不同的序
列。
注意: 每串基因序列最多用一次。
輸入
第一行為用空格分隔的兩個正整數 n , m 。滿足 1 ≤ n ≤ 10 ,1 ≤ m ≤ 20。
然后為 n 行長度為 m 的字符序列,由大寫字母 ATCG 構成。
輸出
一個整數,表示能組合出多少種不同的序列。
樣例
樣例輸入 樣例輸出
3 2
AT
TA
GG
7
May 10, 2020 4
2020 年西電程序設計競賽網絡賽
樣例解釋
除了原來的 AT、TA、GG 三種
還可交叉出
AT×TA=TT
AT×GG=GC
TA×GG=CG
AT×TA×GG=CC
提示
你翻出了之前研究的記錄,但殘缺的頁面上只留下這幾個字:
AT-1
TA-4
GG-15
思路:恕我直言,這個題目的提示真的沒有發現是怎么回事,可能是我太菜了。我們可以發現字符串相乘是符合交換律的,也就是同樣的字符串相乘,無論誰前誰后,都是沒關系的。這就轉換成了任意個數的字符串相乘,最終會出現多少個組合。我的天,在我想明白這一點之前,我弄的全排列求得所有的組合。后來想過來之后,藍橋中不是很多這樣的題嗎,我傻了。。dfs就可以了。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的2020年第十八届西电程序设计竞赛网络预选赛之Problem C 没人比我更懂 COVID-19的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3dmax中如何使用vray双面材质制作
- 下一篇: 2020年第十八届西电程序设计竞赛网络预