Trie 最短的名字

2021-07-16 10:19:57 字數 2024 閱讀 9923

題目鏈結

/*

簡單trie樹的應用,注意在初始化的時候要把cnt也初始化,不然,wa!

下面的四分**各有特點

*///陣列型,名字查詢。

#include

#include

using

namespace

std;

const

int maxn=1000000;

struct tire

};tire tree[maxn];

int tot=1,n,m;

void insert(char* s,int root)

root=tree[root].wd[k];

tree[root].cnt++;

}}int sum=0;

int query (int root)

}return sum;

}char name[1000000+5];

int main ()

printf("%d\n",query(root));

}return0;}

//指標型,dfs查詢

#include

#include

#include

const

int maxn=1000000+5;

const

int si=26;

int n;

char name[maxn];

struct node

root=root->chi[s[i]-'a'];

root->n++;

}}int query(node *root)

}return sum;

}void rease(node *root)

delete root;

}int main()

printf("%d\n",query(root));

}}//陣列型,dfs查詢

#include

#include

using

namespace

std;

const

int maxn=1000000;

struct tire

};tire tree[maxn];

int tot=1,n,m;

void insert(char* s,int root)

root=tree[root].wd[k];

tree[root].cnt++;

}}int sum=0;

int query (int root)

}return sum;

}char name[1000000+5];

int main ()

printf("%d\n",query(root));

}return0;}

//陣列型,名字查詢,名字在string中儲存,雖然可以節約空間,但是由於string只能用cin輸入,所以時間慢。

#include

#include

#include

#include

using

namespace

std;

const

int maxn=1000000;

struct tire

};tire tree[maxn];

int tot=1,n,m;

void insert(string s,int root)

root=tree[root].wd[k];

tree[root].cnt++;

}}int query (string s,int root)

return tree[root].cnt+1;

}string name[1000+5];

int main ()

int ans=0;

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

printf("%d\n",ans);

}return

0;}

最短的名字

在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都以 a 開頭。村...

最短的名字

description 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人...

最短的名字

ription 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都...