洛谷P1019 單詞接龍

2021-09-25 06:03:59 字數 1444 閱讀 7665

題目描述

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」**現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條龍則變為beastonishbeastonish,另外相鄰的兩部分不能存在包含關係,例如atat 和 atideatide 間不能相連。

輸入輸出格式

輸入格式:

輸入的第一行為乙個單獨的整數n

nn (nnn≤

\le≤ 20) 表示單詞數,以下 n

nn 行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在.

輸出格式:

只需輸出以此字母開頭的最長的「龍」的長度

輸入樣例:

輸出樣例:523

attouch

cheat

choose

tact

a

dfs

1.先找到有開頭字母的那乙個字串咯(其實也就直接把那個字元當成乙個字串串了)

2.然後for迴圈遍歷一遍,看有沒有可以接上的,如果有的話就接上

3.接上之後要怎麼辦??繼續接嘛,一直接到接不了為止,然後再回溯,嘗試另外的接法 嗷~~

4.每次接到不能接的時候會得到乙個新的串串,這時更新答案。

#include

#include

using namespace std;

int ans =0;

int n;

//ans為答案,n為輸入的組數

const

int maxn =

100;

//n <= 20

string strs[maxn]

;//儲存每一組的字串

string start;

//開始的字元

int vis[maxn]

;//標記字串是否使用了兩次

string result;

//這是最終的最長字串

bool can_be_connected

(string s1,string s2,

int k)

return

true

;//如果都一樣就返回true

}void

connect

(string& s1,string s2,

int k)

void

dfs(string cur)}}

}int

main()

ps:上面這段**在洛谷可以a過去

但是有的編譯器會執行出錯(可能是沒注意到溢位之類的問題)

還望dalao指正呀

洛谷p1019 單詞接龍

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能...

洛谷p1019單詞接龍

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbe ast 和 astonishas toni sh,如果接成一條龍則變為 be...

洛谷 P1019 單詞接龍

題目描述 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如be ast bea st 和astoni sha st onis h,如果接成一條...