Light OJ 1224
来源:互联网 发布:进程调度算法c语言 编辑:程序博客网 时间:2024/06/10 03:56
字典树入门题,建议还是自己敲一下,毕竟太基础了。
#include<cstring>#include<algorithm>#include<cmath>#include<cstdio>#include<cstdlib>using namespace std;char s[55];typedef struct Tries{ int cur,deepth; Tries *next[4];}Trie;Trie *root;int ans;int xu(char ch){ if(ch=='A') return 0; else if(ch=='C') return 1; else if(ch=='G') return 2; else return 3;}void buildroot(){ root=(Trie *)malloc(sizeof(Trie)); for(int i=0;i<4;i++) root->next[i]=NULL; root->cur=0; root->deepth=0;}void buildTrie(char *str){ int len= strlen(str),i; Trie *p= root, *q; for(i=0; i<len; i++) { int num=xu(s[i]); if(p->next[num]==NULL) { q=(Trie *)malloc(sizeof(Trie)); for(int j=0;j<4;j++) q->next[j]=NULL; q->cur=q->deepth=0; q->cur++; q->deepth=i+1; p->next[num]=q; p= p->next[num]; } else { p->next[num]->cur++; p->next[num]->deepth=i+1; p = p->next[num]; } }}void searchTrie(Trie *r){ ans=max(ans,r->cur*r->deepth); if(r->next[0]==NULL&&r->next[1]==NULL&&r->next[2]==NULL&&r->next[3]==NULL) return ; if(r->next[0]!=NULL) { searchTrie(r->next[0]); } if(r->next[1]!=NULL) { searchTrie(r->next[1]); } if(r->next[2]!=NULL) { searchTrie(r->next[2]); } if(r->next[3]!=NULL) { searchTrie(r->next[3]); }}int main(){ int T,i,j,n; scanf("%d",&T); for(i=1;i<=T;i++) { scanf("%d",&n); buildroot(); for(j=1;j<=n;j++) { scanf("%s",s); buildTrie(s); } ans=0; searchTrie(root); printf("Case %d: %d\n",i,ans); } return 0;}
0 0
- Light OJ 1224
- light oj
- light oj
- Light OJ
- Light OJ
- Light OJ 1000
- Light OJ 1001
- Light OJ 1008
- Light OJ 1022
- Light OJ 1015
- Light OJ 1042
- light oj 1128
- Light OJ 1055 BFS
- Light OJ Beginners Problems
- Light OJ Basic Geometry
- Light OJ Basic Math
- light oj 1124
- Light OJ 1012
- 解决dedecms在php 5.4下标题不能为空,中文修改显示空白错误
- 一直都在混,是认真的时候了
- Git 基本原理与常用命令
- Light OJ 1012
- Swift 中的常量和变量
- Light OJ 1224
- 猴子吃枣-杨辉三角-星星塔-公约数
- thinkphp使用ajax、jquery、Mysql实现了简单的客户端通信功能
- IOS学习笔记16——Core Data
- 大明A+B
- mysql5.5一键安装脚本
- java3:类型转换(type casting)
- Light OJ 1002
- 四种方案解决ScrollView嵌套ListView问题