時間限制: 1 s
空間限制: 128000 kb
題目等級 : 鑽石 diamond
題解給出了n個單詞,已經按長度排好了序。如果某單詞i是某單詞j的字首,i->j算一次接龍(兩個相同的單詞不能算接龍)。
你的任務是:對於輸入的單詞,找出最長的龍。
輸入描述 input description
第一行為n(1<=n<=105)。以下n行每行乙個單詞(由小寫組成),已經按長度排序。(每個單詞長度<50)
輸出描述 output description
僅乙個數,為最長的龍的長度。
樣例輸入 sample inputia
intable
inter
樣例輸出 sample output
資料範圍及提示 data size & hint
1<=n<=105
分類標籤 tags 點此展開
雜湊表棧
線性結構
題解:字典樹+dfs
ac**:
#include#include#include
using
namespace
std;
#define n 1000100
intn,tot,ans,ne,len;
inthead[n],next[n],v[n];
bool
w[n];
char s[90
];void dfs(int k,int
p)//
尋找有沒有x節點,如果有記錄位置
if(!t)//
如果沒有在字典樹上建立乙個節點
if(p==len-1)//
掃到頭,標記末尾,當前答案+1(自己也算乙個),更新ans,退出
else
if(w[t]) tot++;//
有字首出現過,當前答案+1
dfs(t,p+1);//
從t節點再往下掃
}int
main()
printf(
"%d\n
",ans);
return0;
}
1051 接龍遊戲
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond description 給出了n個單詞,已經按長度排好了序。如果某單詞i是某單詞j的字首,i j算一次接龍 兩個相同的單詞不能算接龍 你的任務是 對於輸入的單詞,找出最長的龍。輸入描述 input description...
codevs 1051 接龍遊戲
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 給出了n個單詞,已經按長度排好了序。如果某單詞i是某單詞j的字首,i j算一次接龍 兩個相同的單詞不能算接龍 你的任務是 對於輸入的單詞,找出最長的龍。輸入描述 input description 第一行為n 1 n 1...
codevs 1051 接龍遊戲
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解給出了n個單詞,已經按長度排好了序。如果某單詞i是某單詞j的字首,i j算一次接龍 兩個相同的單詞不能算接龍 你的任務是 對於輸入的單詞,找出最長的龍。輸入描述 input description 第一行為n 1 n...