題目描述
【問題描述】
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的 最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果 接成一條龍則變為beastonish,另外相鄰的兩部分不能存在包含關係,例如at 和 atide 間不能相連。
【輸入檔案】
輸入的第一行為乙個單獨的整數n (n<=20)表示單詞數,以下n 行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭 的字母。你可以假定以此字母開頭的「龍」一定存在.
【輸出檔案】
只需輸出以此字母開頭的最長的「龍」的長度
輸入 輸出
樣例輸入
5 at
touch
cheat
choose
tact
a 樣例輸出
23 由於資料較弱,所以dfs。
具體見**,因為不知道dfs要怎麼說。
#include
#include
#include
#include
#include
using
namespace
std;
string s[21];
string st;
int n,maxl=0;
int tf[25];
void put_tog(string &x,string y,int k)//讓y接在x後面
bool can(string s,string m,int k)//判斷s和m是否可以前k位匹配
void dfs(string now)}}
}int main()
NOIP2000提高組 單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能...
NOIP 2000 提高組 複賽 單詞接龍
noip 2000 提高組 複賽 單詞接龍 1.程式編寫過程中,發現接龍處的判斷編寫有誤,馬上著手修改。2.樣例通過,提交40分,錯了測試點1 4.輸入 1envelopee 輸出 154.上述測試點是挺經典的,不容易考慮到。envelope envelope 拼接成envelopenvelope ...
NOIp2000提高組 單詞接龍(dfs)
思路 首先要知道兩個單詞合併時,合併部分取的是最小重疊部分,相鄰的兩部分不能存在包含關係就是說如果存在包含關係,就不能標記為使用過,每個單詞最多出現兩次。搜尋的時候開個vis標記陣列,用來標記每個單詞使用的次數,從開頭字母開始搜尋,兩層for,第一層for搜尋每乙個單詞,第二層for是判斷我們搜尋的...