洛谷 P1019 單詞接龍

2021-10-02 12:04:46 字數 1096 閱讀 2627

題目鏈結

題目描述

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

1.每個單詞最多在龍里出現兩次

2.不能在龍里出現包含關係

3.可以有重合部分

很明顯,第乙個要接的單詞必須首字母是給出的字母,dfs的入口就是滿足這個條件的字串,答案就是這些字串去dfs找出的最大值,如何dfs?接下來的單詞前一部分必須是上乙個已經在龍裡面的單詞的某個字尾,那就去遍歷上乙個單詞從尾開始找,找到乙個字元和要接的單詞的開頭一樣,ok接著找,其中一旦發現有某個字元不一樣那就不能接龍,如果都可以就返回新增的長度,不如auto,utoh,隨便舉個例子,找到乙個字元和要接的單詞一樣的位置是u,新增長度是要接的字元長度減去公共長度4-3=1~

#includeusing namespace std;

#define ll long long

#define rg register ll

string s[25];

ll ans,maxx,vis[25],n;

inline ll com(ll x,ll y)

return s[y].length()-ans-1;}}

return 0;

}inline void dfs(ll x)

}//cout<>n;

for(rg i=1;i<=n;i++)cin>>s[i];

getchar();

char ch;

cin>>ch;

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

}cout

return 0;

}

洛谷p1019 單詞接龍

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

洛谷p1019單詞接龍

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

洛谷 P1019 單詞接龍

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