【輸入格式】
輸入的第一行包含三個整數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...