藍橋杯 16決賽 C6 鹼基 閱讀理解

2021-10-08 15:30:10 字數 1269 閱讀 4124

【輸入格式】

輸入的第一行包含三個整數n、m、k,兩個整數之間用乙個空格分隔,意義如題目所述。

接下來n行,每行乙個字串表示一種生物的dna序列。

dna序列從1至n編號,每個序列中的鹼基從1開始依次編號,不同的生物的dna序列長度可能不同。

【輸出格式】

輸出乙個整數,表示關注的元組個數。

答案可能很大,你需要輸出答案除以1000000007的餘數。

【樣例輸入】

3 2 2

atctcg

acg【樣例輸出】

2再例如:

【樣例輸入】

4 3 3

aaaaaaa

aaaaaa

【樣例輸出】

7【資料規模與約定】

對於20%的資料,k<=5,所有字串總長l滿足l <=100

對於30%的資料,l<=10000

對於60%的資料,l<=30000

對於100%的資料,n<=5,m<=5,1<=k<=l<=100000

保證所有dna序列不為空且只會包含』a』 』g』 』c』 』t』四種字母

資源約定:

峰值記憶體消耗 < 256m

cpu消耗 < 1000ms

思路:得到可能的序列(因為序列定長為m)

dfs搜尋序列在生物組(陣列)**現的次數

(做的時候,感覺難度在於閱讀理解)

總結:一開始在考慮資料容器的時候,第乙個想法:採用形如陣列[物種(int)][序列(string)][次數(int)],但是細想一波,成本有點高,故棄掉了,改用string 陣列

在考慮遍歷方式的時候,一開始是想根據數學公式構建乙個排列組合的方法zuhe(int a ,int b),後面我又考慮到成本–dfs深度n只有5,所以…dfs真香

public

class

main

private

static

void

dfs(string s ,

int lev ,

int times)

if(lev ==n)

for(

int i =

0;i .length ;i ++

)dfs

(s ,lev +

1,times)

;//相鄰物種找不到,隔行找

}private

static

void

init()

sc.close()

;}}

藍橋杯 15決賽 C6 居民集會 dfs

輸入格式 輸入的第一行包含兩個整數n,l,分別表示藍橋村的家庭數和公路長度。接下來n行,每行兩個整數di,ti,分別表示第i戶家庭距離公路起點的距離和家庭中的人數。輸出格式 輸出一行,包含乙個整數,表示村內所有人路程的開銷和。樣例輸入 6 10 1 32 2 4 55 20 6 58 7 樣例輸出 ...

藍橋杯2023年決賽c 高職

1.從4個人中選2個人參加活動,一共有6種選法。從n個人中選m個人參加活動,一共有多少種選法?下面的函式實現了這個功能。請仔細分析 填寫缺少的部分 下劃線部分 n 個元素中任取 m 個元素,有多少種取法。includeusing namespace std int f int n,int m voi...

藍橋杯決賽 神奇6位數

有乙個6位的正整數,它有個很神奇的性質 分別用2 3 4 5 6去乘它,得到的仍然是6位數,並且乘積中所包含的數字與這個6位數完全一樣!只不過是它們的順序重新排列了而已。請計算出這個6位數。這是乙個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容 比如說明性的文字 include includeu...