POJ2418 二叉排序树 && 字典树写法
2016-05-11 17:15
267 查看
字典树
二叉排序树
#include<stdio.h> #include<string.h> #include<stdlib.h> struct node{ int count; struct node *next[100]; node(){ count=0; memset(next,0,sizeof(next)); } }; node *h,*p,*q; int ans; char sx[40]; void insert(char *s){ int i,j,k; p=h; k=strlen(s); for(i=0;i<k;i++){ if(p->next[s[i]-' ']==NULL){ q=new node; p->next[s[i]-' ']=q; } p=p->next[s[i]-' ']; } if(p->count==0)p->count=1; else p->count++; } void out(node *t,int x){ if(t==0)return; for(int i=0;i<=95;i++) if(t->next[i]!=0){ sx[x]=i+' '; if(t->next[i]->count!=0){ sx[x+1]='\0'; printf("%s %.4f\n",sx,100.0*t->next[i]->count/ans); } out(t->next[i],x+1); } return; } int main(){ char s[40]; h=new node; while(gets(s)!=NULL){ //if(strcmp(s,"0")==0)break; insert(s);ans++; }; out(h,0); return 0; }
二叉排序树
#include<cstdio> #include<algorithm> #include<cstring> #include<string> using namespace std; struct node{ char ch[100]; int l,r; int cnt; }a[10001]; int len,sum=0; void insert(int h,char *s){ int cmp=strcmp(a[h].ch,s); if (cmp==0){a[h].cnt++;return ;} if(cmp<0){ if(a[h].r==0){ strcpy(a[++len].ch,s); a[len].cnt=1; a[h].r=len; }else insert(a[h].r,s); }else{ if(a[h].l==0){ strcpy(a[++len].ch,s); a[len].cnt=1; a[h].l=len; }else insert(a[h].l,s); } } void out(int h){ if(a[h].l!=0)out(a[h].l); printf("%s %.4f\n",a[h].ch,100.0*a[h].cnt/sum); if(a[h].r!=0)out(a[h].r); } int main(){ int i,j,k,m,n; char s[100]; gets(a[1].ch);a[1].cnt=1;len=1;sum=1; while(gets(s)!=NULL){ insert(1,s);sum++; } out(1); return 0; }
相关文章推荐
- cug1699数组反转
- Caffe源码(一):math_functions 分析
- 20160511 GreenPlum9 索引
- 自定义AndroidStudio中的默认Header信息
- ios 支付宝支付
- python的json格式文件读写
- 构造函数,数组取最大值,最小值的体现。
- java动态编译
- eclipse总是报错:Building workspace has encountered a problem.errors occurred
- 从编程语言、算法、项目等层面深谈读研如何提高技术【转载】
- 配置Servlet相对路径和绝对路径
- 移动端js触摸事件
- unity下的www类
- spring 根上下文和 spring dispatcherServlet 上下文的关系
- C++之嵌套类与外围类及友元
- Linux中awk抽取包含某字段的整行日志
- 对象基础创建对象(一)
- 拨开迷雾 让您明白了解路由器传输性能
- nginx重新加载配置(不停服)
- eclipse中jsp页面<%@page import="javax.servlet.http.*"%>报错