洛谷P1019單詞接龍 dfs

2021-09-24 06:43:45 字數 1043 閱讀 7130

#include#include#include#includeusing namespace std;

int n;

int ans = 0;

string s[22];

int u[22];

int check(string s1,string s2)

} if (p == 1) return i;

}return 0;

}void dfs(int length,string s1){

if (length > ans ) ans = length;

for (int i = 1 ;i <= n;i++)

if (check(s1,s[i]) && u[i]<2) {

string s2;

s2 = s1;

int t = s[i].length();

/* for (int j = check(s1,s[i]);j >n;

for (int i = 1;i <= n;i ++)

cin>>s[i];

cin>>s[n+1];

dfs(s[n+1].length(),s[n+1]);

cout《開始犯了兩個錯誤:1.取的不是最小重疊而是最大重疊,在check中i從t3往1迴圈,這樣會導致如果s1 是abcdaskask,s2是askaskabcd的話,重疊部分算的是askask,重疊數為6,而題目要求只需要ask就可以,為3

這樣就會浪費很多位.只能過最後三個點.

第二個錯誤,check處最後忘記return 0,導致如果兩個字串沒有重疊,則一直沒有返回值,所以最後三個點一直在tle,hhh兩個錯誤乙個過了前三個點,乙個過了後三個點,但沒資料啊,還是沒用

下面講思路

兩個函式,dfs和check,dfs用來跑搜尋,check用來檢查,檢查的時候按照長度小的來…

dfs看了大佬的**,我每次都會在更新字串長度的時候把字串也更新,最後估計會變成乙個究極長的字串,但其實只需要把新字串變成a[i]就可以(不知道是不是bug,我覺的我的更保險,而且時間複雜度不會高很多).

洛谷 P1019 單詞接龍 (DFS)

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

洛谷P1019 單詞接龍(dfs)

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

洛谷p1019 單詞接龍

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