單詞接龍
深搜和substr()函式的使用。
由於相連線的單詞只會是乙個連乙個,不可能出現乙個單詞隔著連兩個(這樣中間那個就沒用了),所以不需要儲存連線好的「龍」,只需知道任意兩個單詞之間能否相連,最少幾個字母相連,隻後就可以用dfs來搜尋最長「龍」。
雖然理論上是會超時的,但資料較水,從題目中n<=20也就應該聯想到可以通過遍歷來暴力求解(話說好像也確實沒有什麼巧妙的方法)。
str.substr(start,len);#include
using namespace std;
string str[23]
;int link[23]
[23]=
, used[23]
=, ans =
1, n;
void
dfs(
int a,
int len)
} used[a]--;
ans =
max(ans, len);}
intmain()
}}}//迭代來找公共部分
for(
int i =
1; i <= n; i++)}
//深搜來遍歷每一種情況
cout << ans;
return0;
}
函式返回值為字串(string),start是開始位置,從0開始,len是返回字串的長度。
其中len可以不填,預設取到末尾。
CODEVS 1018單詞接龍
新穎方法 hljs cpp include include using namespace std struct ag 25 25 int cut 25 vis 25 trytry,n,maxn 1 char a 25 20 b int catchdragon char x,char y,int m...
codevs 1018 單詞接龍
題目描述 description 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如beast和astonish,如果接成一條龍則變為beast...
codevs1018單詞接龍
2000年noip全國聯賽普及組noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 題目描述 description 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞...