HDU1004
来源:互联网 发布:关于提供数据的回函 编辑:程序博客网 时间:2024/04/29 09:00
相信很多人都做过这题目,你可以完全当做这是一条水题,但是最近在搞TRIE,就用TRIE来做。
首先,用map一次水掉了,不解释,当然也可以自己写一个map,如编程珠玑统计圣经单词那样做,一摸一样。
#include<iostream>#include<map>#include<cstring>#include<string>#include<cstdio>using namespace std;int main(){ int n,i; char str[30]; map<string,int> mp; while(scanf("%d",&n)&&n){ mp.clear(); for(i=0;i<n;i++){ scanf(" %s",str); mp[str]++; } map<string,int>::iterator itr=mp.begin(); int max=-1; string sb=""; while(itr!=mp.end()){ //cout<<itr->second; if(itr->second>max){ max=itr->second; sb=itr->first; } itr++; }; cout<<sb<<endl; } return 0;}
105698132014-04-18 15:54:39Accepted100415MS284K585 BC++deron
后来,我就拿着自己的trie树模板在改了,改了好多次,终于觉得没问题了,还是WA……
因为,其实我从来不会用char *,这次用了char * s,char sb[];s=sb,这样导致一直WA……为什么?我也不知道啊,我能说我从来都是用string么(求大神指导)……
后来,用了strcpy,第一次用啊……感觉自己好弱。
马上就AC了,世界就是这么神奇……
为什么乱码……今天开得是VC6,每次打开在linux写的就会这个样子……懒得改了,大家可以YY……
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cstdlib>using namespace std;template<int Size>struct trie_node{ bool terminable; //??????????? int node; //?????? int cnt; trie_node *child[Size]; //???? trie_node():terminable(false), node(0),cnt(0){ memset(child,0,sizeof(child)); //????? }};int maxN;char sb[30]; char s[30];template<int Size,typename Index>class trie{ public: //???? typedef trie_node<Size> node_type; typedef trie_node<Size> *link_type; //???? trie(Index i=Index()):index(i){ } //????,???? void clear(){ clear_node(root); for(int i=0;i<Size;i++) root.child[i]=0; } //?? template<typename Iterator> bool insert(Iterator begin,Iterator end){ link_type cur= &root;//???????? while(begin!=end){ if(!cur->child[index[*begin]]){//??? cur->child[index[*begin]]=new node_type; cur->node++; } cur=cur->child[index[*begin]]; begin++; //??????! } cur->terminable=true; cur->cnt++; if(cur->cnt> maxN){ maxN=cur->cnt; // cout<<maxN; return true; } return false; } //??c???? void insert( char * str){ if(insert(str,str+strlen(str))){ strcpy(sb,str); }; } private: //?? void clear_node(node_type cur){ for(int i=0;i<Size;i++){ if(cur.child[i]==0)continue; //??? clear_node(*cur.child[i]); delete cur.child[i]; cur.child[i]=0; if(--cur.node==0) break; //????? } } //? node_type root; //?????,??hash Index index;};class IndexClass{ public: int operator[](const char key){ return key%26; //???? }};int main(){ trie<26,IndexClass> t; //freopen("in.txt","r",stdin); int n; while(scanf("%d",&n)&&n) { maxN=-1; for(int i=0;i<n;i++){ scanf("%s",s); t.insert(s); // cout<<maxN<<endl; } printf("%s\n",sb); t.clear(); } return 0;}
0 0
- hdu1004
- hdu1004
- HDU1004
- HDU1004
- hdu1004
- HDU1004
- hdu1004
- hdu1004
- hdu1004
- HDU1004
- HDU1004
- HDU1004
- HDU1004
- hdu1004
- HDU1004
- HDU1004
- HDU1004
- HDU1004
- HDU2085
- AS3画五角星一类的算法实现函数
- mysql的静态表和动态表的区别,MyISAM和InnoDB的区别
- 黑马程序员-Java交通灯管理系统
- 迷宫寻宝(一)
- HDU1004
- linux 查看机器运行状态常用命令
- 端口占用
- 监听ContentProvider数据改变
- 制作iOS Ad-Hoc测试应用
- HDU 1010 Tempter of the Bone
- Java NIO系列教程(一) Java NIO 概述
- 用OpenSSL做自签名的证书(by quqi99)
- C++replace()函数用法