标签:for ring 应该 als clear init oid ret hello
虽说第一篇博客应该是Hello,world!
,但是错过第一篇,只好在这补上啦。
#include<iostream>
#include<cstring>
#innclude<cmath>
struct Trie
{
int ch[maxn][maxsize];
int val[maxn];
int sz;
Trie()
{
sz=1;
val[0]=0;
memset(ch[0],0,sizeof ch[0]);
}
void clear()
{
sz=1;
val[0]=0;
memset(ch[0],0,sizeof ch[0]);
}
int idx(char c){return c-'a';}
void insert(const char *s,int v=1)
{
int u=0,n=strlen(s);
for (int i=0;i<n;i++)
{
int c=idx(s[i]);
if (ch[u][c]==0)
{
memset(ch[sz],0,sizeof ch[sz]);
val[sz]=0;
ch[u][c]=sz++;
}
u=ch[u][c];
}
val[u]=v;
}
int find(const char *s)
{
int u=0,n=strlen(s);
for (int i=0;i<n;i++)
{
int c=idx(s[i]);
if (ch[u][c]==0) return -1;
u=ch[u][c];
}
return val[u];
}
void del(const char *s)
{
int u=0,n=strlen(s);
for (int i=0;i<n;i++)
{
int c=idx(s[i]);
if (ch[u][c]==0) return ;
u=ch[u][c];
}
val[u]=0;
}
}Hello,world;
void Init()
{
Hello.insert("Hello");
world.insert("world");
Trie tmp;
tmp.insert("Hello, world!");
tmp.del("Hello, ");
if (tmp.find("Hello")){Hello.clear();Hello.insert("Hello");}
if (tmp.find("world")){world.clear();world.insert("world");}
}
const char P1=',',P2=' ',P3='!';
int main()
{
const char* HelloWorld="Hello, world!";
bool IsFind=false;
Init();
for (char i=0;i<127;i++)
for (char j=0;j<127;j++)
for (char k=0;k<127;k++)
for (char m=0;m<127;m++)
for (char n=0;n<127;n++)
{
char p[5];
p[0]=i,p[1]=j,p[2]=k,p[3]=m,p[4]=n;
char* d;
strcpy(d,p);
if (Hello.find(d)) cout<<d<<P1<<P2,IsFind=true;
if (world.find(d)) cout<<d<<P3,IsFind=true;
}
if (!IsFind) cout<<HelloWorld;
return 0;
}
标签:for ring 应该 als clear init oid ret hello
原文地址:https://www.cnblogs.com/CDOI-24374/p/12268461.html