| ||||||||||
| 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 | |||||||||
Re:POJ 上TLE。。。。HDU上过了。。。为神马。。。In Reply To:POJ 上TLE。。。。HDU上过了。。。为神马。。。 Posted by:solo_013 at 2012-08-17 21:13:42 > #include<stdio.h>
> #include<string.h>
> #include<stdlib.h>
> #define MAX 10
> #define N 10005
> int flag,n;
> struct tree{
> bool vis;//若该点是尾节点,标记1
> struct tree *next[MAX];
> };
> tree root;
> char ch[15];
> void end(tree *root)
> {
> for(int i=0;i<10;i++)
> {
> if(root->next[i]!=NULL) end(root->next[i]);
> delete root->next[i];
> root->next[i]=NULL;
> }
> }
> void build(char *str){
> int i,j,k,id,len=strlen(str);
> tree *p=&root,*temp;
> for(i=0;i<len;i++){
> id=str[i]-'0';
> if(p->next[id]==NULL){
> temp=(tree *)malloc(sizeof(root));
> for(j=0;j<MAX;j++){
> temp->vis=false;
> temp->next[j]=NULL;
> }
> p->next[id]=temp;
> p=p->next[id];
> }
> else{
> p=p->next[id];
> if(p->vis==true){
> flag=1;
> return;//先前已有比自己短的号码,并且检查到自己的某个位置就是他的结尾,return
> }
> }
> }
> p->vis=true;
> for(i=0;i<MAX;i++)
> if(p->next[i]!=NULL)
> {
> flag=1;
> return ;
> }
> }
> int main(){
> int i,j,k,t,m;
> scanf("%d",&t);
> getchar();
> while(t--){
> scanf("%d",&n);
> flag=0;
> //getchar();
> while(n--){
> scanf("%s",ch);
> //getchar();
> build(ch);
> if(flag==1)break;
> }
> while(n&&flag){
> scanf("%s",ch);
> n--;
> }
> if(flag==1)
> printf("NO\n");
> else
> printf("YES\n");
> tree *tp=&root;
> end(tp);
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator