https://vjudge.net/problem/UVALive-3942 {abc,abd,abcd,bcd,efg,hii}这些字符串的集合组合的字典树. 前缀树: #include #include #include #include #include #include #include #define max_length 300100 #define sigma_size 27 #define MODE 20071027 #define max_node 4001*102 using namespace std; int ch[max_node][sigma_size],val[max_node],sz; int dp[max_length],len; char str[max_length],word[1005]; int index(char c){return c-'a';} void insert(char *s,int v) { int le =strlen(s),u=0; for(int i = 0;i< le ;i++) { int c = index(s[i]); if(!ch[u][c]) { memset(ch[sz],0,sizeof ch[sz]); val[sz] = 0; ch[u][c]=sz++; } u = ch[u][c]; } val[u]=v; } int find(int x) { int u = 0 , cnt = 0; for(int i = x ; i =0; i--)dp[i] = find(i); printf("Case %d: %d\n",++count,dp[0]); } return 0; }