poj 2418 Hardwood Species
2013-04-14 19:39
323 查看
为了练习下字典树找的题目,用的是数组模拟的链表。
其实更简单的做法是用一次快排。
#include
#include
#include
using namespace std;
const int maxn=111111;
char a[101];
double sum;
struct
{
char data;
int w[100];
int count;
}tr[maxn];
int lon;
int insert(char a[])
{
int t=1;
for(int
i=0;a[i]!=0;i++)
{
//
printf("%d ",a[i]-' ');
if(tr[t].w[a[i]-' ']==0)
{
tr[t].w[a[i]-' ']=++lon;
tr[lon].data=a[i];
t=lon;
}
else
{
t=tr[t].w[a[i]-' '];
}
}
tr[t].count++;
// printf("%d
%d\n",t,tr[t].count);
}
char ans[101];
int prin(int t,int w)
{
//
printf("%d\n",t);
if(tr[t].data==0)
return(0);
ans[++w]=tr[t].data;
if(tr[t].count>0)
{
for(int i=2;i<=w;i++)
printf("%c",ans[i]);
printf(" ");
printf("%.4f\n",tr[t].count/sum*100);
}
for(int
i=0;i<99;i++)
prin(tr[t].w[i],w);
}
int main()
{
//
freopen("in.txt","r",stdin);
sum=0;
lon=1;
memset(tr,0,sizeof(tr));
while(gets(a))
{
++sum;
insert(a);
}
tr[1].data=1;
prin(1,0);
return 0;
}
其实更简单的做法是用一次快排。
#include
#include
#include
using namespace std;
const int maxn=111111;
char a[101];
double sum;
struct
{
char data;
int w[100];
int count;
}tr[maxn];
int lon;
int insert(char a[])
{
int t=1;
for(int
i=0;a[i]!=0;i++)
{
//
printf("%d ",a[i]-' ');
if(tr[t].w[a[i]-' ']==0)
{
tr[t].w[a[i]-' ']=++lon;
tr[lon].data=a[i];
t=lon;
}
else
{
t=tr[t].w[a[i]-' '];
}
}
tr[t].count++;
// printf("%d
%d\n",t,tr[t].count);
}
char ans[101];
int prin(int t,int w)
{
//
printf("%d\n",t);
if(tr[t].data==0)
return(0);
ans[++w]=tr[t].data;
if(tr[t].count>0)
{
for(int i=2;i<=w;i++)
printf("%c",ans[i]);
printf(" ");
printf("%.4f\n",tr[t].count/sum*100);
}
for(int
i=0;i<99;i++)
prin(tr[t].w[i],w);
}
int main()
{
//
freopen("in.txt","r",stdin);
sum=0;
lon=1;
memset(tr,0,sizeof(tr));
while(gets(a))
{
++sum;
insert(a);
}
tr[1].data=1;
prin(1,0);
return 0;
}
相关文章推荐
- poj 1014 Dividing
- poj&nbsp;3013&nbsp;Big&nbsp;Christmas&nbsp;Tree&nbsp;(spf…
- poj&nbsp;2762&nbsp;Going&nbsp;from&nbsp;u&nbsp;to&nbsp;v&nbsp;or&nbsp;fr…
- poj&nbsp;1463&nbsp;Strategic&nbsp;game(树状DP…
- poj&nbsp;2184&nbsp;Cow&nbsp;Exhibition(0/1背包…
- POJ 2418 Hardwood Species 二叉排序树
- poj 2418 Hardwood Species (map)
- POJ&nbsp;&nbsp;3299
- POJ&nbsp;1607
- POJ&nbsp;2105
- poj 2226
- poj 1300 简单的欧拉图…
- POJ 1004 Financial Management(…
- poj 1797_迪杰斯特拉
- poj 2418 Hardwood Species
- POJ-2418-Hardwood Species-字典树
- poj[2418] Hardwood Species 二叉搜索树
- ACM: 图论题poj 1860 (没心情复习…
- ACM: 图论题 poj 1062 (邻接矩阵+d…
- ACM: 深搜+剪枝 poj 1416