NOIP提高組2000 單詞接龍

2021-08-05 22:41:39 字數 927 閱讀 4720

題目描述

【問題描述】

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的 最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 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是判斷我們搜尋的...