脫水縮合(大搜尋)

2022-05-14 18:30:06 字數 2703 閱讀 5420

脫水縮合

(merge.c/cpp/pas)

【題目描述】

fqk 退役後開始補習文化課啦, 於是他開啟了生物必修一開始複習

蛋白質,他回想起了氨基酸通過脫水縮合生成肽鍵,具體來說,乙個

氨基和乙個羧基會脫去乙個水變成乙個肽鍵。於是他腦洞大開,給你

出了這樣一道題:

fqk 將給你 6 種氨基酸和 m 個脫水縮合的規則,氨基酸用

' ' , ' ' , ' ' , ' ' , ' ' , ' ' f e d c b a 表示,每個規則將給出兩個字串 t s, ,其中

1 | | , 2 | |   t s ,表示 s 代表的兩個氨基酸可以通過脫水縮合變成 t 。然後

請你構建乙個長度為 n ,且僅由 ' ' , ' ' , ' ' , ' ' , ' ' , ' ' f e d c b a 構成的氨基酸序列,

如果這個序列的前兩個氨基酸可以進行任意一種脫水縮合, 那麼就可

以脫水縮合,脫水縮合後序列的長度將 1  ,這樣如果可以進行 1  n 次

脫水縮合,最終序列的長度將變為 1 ,我們可以認為這是乙個蛋白質,

如果最後的蛋白質為 ' 'a , 那麼初始的序列就被稱為乙個好的氨基酸序

列。 fqk 想讓你求出有多少好的氨基酸序列。

注:題目描述可能與生物學知識有部分偏差(即氨基酸進行脫水

縮合後應該是肽鏈而不是新的氨基酸),請以題目描述為準。

【輸入格式】

第一行兩個整數 q n, 。

接下來 q 行,每行兩個字串 t s, ,表示乙個脫水縮合的規則。

【輸出格式】

一行,乙個整數表示有多少好的氨基酸序列。

【輸入樣例】

3 5ab a

cc c

ca a

ee c

ff d

【輸出樣例】

4【樣例解釋】

一共有四種好的氨基酸序列,其脫水縮合過程如下:

"abb" "ab" "a"

"cab" "ab" "a"

"cca" "ca" "a"

"eea" "ca" "a"

【資料範圍】

對於 % 100 的資料, 36 , 6 2    q n 。資料存在梯度。

【時空限制】

對於每個測試點,時間限制為 s 2 ,空間限制為 mb 512 。

思路:純搜尋題

我們從"a"開始搜尋,每次搜到長度等於n的序列就return

不需要判斷這個序列是否合法

因為就是從"a"出來的

這個序列一定合法的

唯一需要判定的就是是否重複

判斷是否重複最好用bfs寫

而且這個題的資料範圍特別小

但是當時腦抽不知道怎麼著就寫了個dfs

按理說dfs是能過的

但是腦子又抽了一下

判斷還放在了return的後面

天啊,50分就這麼沒了

要不是這資料水我就爆零了

這告訴我們腦子是個好東西

所以以後寫搜尋一定要先判斷是否重複

來,上**:

(附兩個**,乙個是dfs(雖然標解就是dfs),另乙個是bfs)

dfs:

#include#include

#include

#include

#include

using

namespace

std;

struct

node ;

struct node edge[40

];int

n,q,num;

long

long

int ans=0

;string

cur,kol;

maphead;

mappd;

void edge_add(string

from,string

to)void dfs(string kcc,int

now)

string kll=kcc;

for(int i=head[kcc[kcc.length()-1]];i!=0;i=edge[i].next)

}int

main()

dfs("a

",0);

cout

return0;

}

bfs:

#include#include

#include

#include

#include

#include

using

namespace

std;

struct

node ;

struct node edge[1000

];int

n,q,num;

long

long

int ans=0

;string

cur,kol;

maphead;

mappd;

queue

que;

void edge_add(string

from,string

to)void

bfs()

}que.pop();

}}int

main()

bfs();

cout

return0;

}

mysql大文字搜尋

mysql內建了三種儲存引擎,分別是innodb,myisam和memory,一般情況下,mysql5.x之後的版本都是使用innodb儲存引擎.三種引擎的對比 innodb 支援事務操作 支援自動增加列 具有行級鎖定 myisam 不支援事務,也不支援外來鍵,但是訪問速度快 對大文字搜尋效能較好 ...

資料大搜尋 UESTC 59

寫乙個程式,把乙個字串中的數字子串行找出來並轉換成十進位制整數輸出。input 第一行是整數nn,表示測試的資料組數,下面是nn行無空格的字串 長度不超過200 題目保證字串中含的整數字數小於99位,不考慮負數情形。output 每一行輸入對應一行輸出,一行中若有多個資料,每個資料後有乙個空格。sa...

資料大搜尋 UESTC 59

uestc 59 寫乙個程式,把乙個字串中的數字子串行找出來並轉換成十進位制整數輸出。input 第一行是整數nn,表示測試的資料組數,下面是nn行無空格的字串 長度不超過200 題目保證字串中含的整數字數小於99位,不考慮負數情形。output 每一行輸入對應一行輸出,一行中若有多個資料,每個資料...