| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
会错了树的意思,结果成了这样,用二叉时间大概是多少,我的700+ms#include<stdio.h>
#define KIDS 128
#define NAMELONG 100
typedef struct node
{
char abc;
int num;
struct node * pnode[KIDS];
}node;
void inwoods(char s[NAMELONG],node * root);
void outwoods(char pri[NAMELONG],int height,node * root,const sum);
void destroyWoods(node * root);
int main()
{
int i,sum=0;
char s[NAMELONG];
node * root;
root=(node *)malloc(sizeof(node));
root->abc='a';
root->num=0;
for(i=0;i<KIDS;i++)
root->pnode[i]=NULL;
while(gets(s))
{
inwoods(s,root);
sum++;
}
outwoods(s,0,root,sum);
destroyWoods(root);
return 0;
}
void inwoods(char s[NAMELONG],node * root)
{
int i,j;
node * pmove=root;
for(i=0;s[i]!='\0';i++)
{
if(pmove->pnode[s[i]]==NULL)
{
pmove->pnode[s[i]]=(node *)malloc(sizeof(node));
pmove=pmove->pnode[s[i]];
for(j=0;j<KIDS;j++)
pmove->pnode[j]=NULL;
pmove->abc=s[i];
pmove->num=0;
}
else
pmove=pmove->pnode[s[i]];
}
pmove->num=pmove->num+1;
}
void outwoods(char pri[NAMELONG],int height,node * root,const sum)
{
int i,j=0;
if(root!=NULL)
{
if(height!=0)
{
pri[height-1]=root->abc;
if(root->num!=0)
{
pri[height]='\0';
while(pri[j]!='\0')
{
printf("%c",pri[j]);
j++;
}
printf(" %.4f\n",((double)root->num/sum)*100);
}
}
for(i=0;i<KIDS;i++)
outwoods(pri,height+1,root->pnode[i],sum);
}
}
void destroyWoods(node * root)
{
int i;
if(root!=NULL)
{
for(i=0;i<KIDS;i++)
destroyWoods(root->pnode[i]);
free(root);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator