作者:曹莹888淑女 | 来源:互联网 | 2023-05-19 04:24
模版链接
建树 的过程剖析
#include
using namespace std;
#define inf 0x3f3f3f3f
#define LL long long
const int MAXN = 100000;
const int MAXM = 1e6+100;
const double PI = acos(-1.0);
const double eps = 1e-8;
inline int read(){
int x=0,f=1; char ch=getchar();
while (ch<'0'||ch>'9') { if (ch=='-') f=-1; ch=getchar(); }
while (ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); }
return x*f;
}
char str[1010][50];
int ch[MAX][30];
int word[MAX];
int val[MAX];
int sz;
void init()
{
sz = 1;
memset(ch[0], 0, sizeof(ch[0]));
memset(word, 0, sizeof(word));
}
int idx(char x)
{
return x - 'a';
}
void insert(char *s)
{
int i, j, len = strlen(s);
int u = 0;
for(i = 0; i {
int c = idx(s[i]);
if(!ch[u][c])
{
memset(ch[sz], 0, sizeof(ch[sz]));
val[sz] = 0;
ch[u][c] = sz++;
}
u = ch[u][c];
word[u]++;
}
val[u] = 1;
}
int findnum(char *s)
{
int i, j, l = strlen(s);
int u = 0;
for(i = 0; i {
int c = idx(s[i]);
if(!ch[u][c]) return 0;
u = ch[u][c];
}
return word[u];
}
void findprefix(char *s)
{
int i, j, len = strlen(s);
int u = 0;
for(i = 0; i {
int c = idx(s[i]);
u = ch[u][c];
printf("%c", s[i]);
if(word[u] == 1)
return ;
}
}
bool judgeprefix(char *s)
{
int i, j, len = strlen(s);
int u = 0;
for(i = 0; i {
int c = idx(s[i]);
u = ch[u][c];
if(word[u] == 1)
return true;
}
return false;
}
bool finds(char *s)
{
int i, j, len = strlen(s);
int u = 0;
for(i = 0; i {
int c = idx(s[i]);
if(!ch[u][c])
return false;
u = ch[u][c];
}
return val[u];
}
int main()
{
return 0;
}