zoukankan      html  css  js  c++  java
  • POJ--1056 IMMEDIATE DECODABILITY && POJ--3630 Phone List(字典树)

    题目链接

    题目大意 看输入的每个字符串中是否有一个字符串是另一个字符串的前缀

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    #define maxn 10001
    string b[maxn];
    int tot=0;
    struct ac{
       int sum,fa,nex[30];
       void init(){
         sum=0;fa=0;
         memset(nex,0,sizeof(nex));
       }
    }tre[maxn*4];
    void add(char a[],bool &f){
       int i=0,j=0,k=0;
       while(a[i]){
           int z=a[i]-'0';
           if(tre[k].nex[z]){
              j=tre[k].nex[z];
              tre[j].sum++;
              if(tre[j].fa) f=1;
           }else{
              tre[k].nex[z]=++tot;
              j=tot;
              tre[j].init();
              tre[j].sum++;
           }
           k=j;
           i++;
       }
       tre[k].fa++;
    }
    /*bool query(string a){
       int i=0,j=0,k=0;
       while(i<a.size()-1){
          int z=a[i]-'0';
          if(tre[k].nex[z]){
             j=tre[k].nex[z];
             if(tre[j].fa) return 1;
          }else return 0;
          k=j;
          i++;
       }
    }*/
    int main(){
       char a[1001];
       int len=0,tt=1;
       bool fa=0;
       while(scanf("%s",a)!=EOF){
          if(a[0]!='9'){
             add(a,fa);
          }else{
             if(fa)
                printf("Set %d is not immediately decodable
    ",tt++);
             if(!fa){
                 printf("Set %d is immediately decodable
    ",tt++);
             }
             len=0;tot=0,fa=0;
             memset(tre,0,sizeof(tre));
          }
       }
    }

     题目链接 : POJ--3630 Phone List

    题意和上一个题差不多 都是找里面是否含有前缀和相同的

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    #define maxn 100010
    int tot=0;
    struct ac{
       int sum,fa,nex[11];
       void init(){
         sum=0;fa=0;
         memset(nex,0,sizeof(nex));
       }
    }tre[maxn];
    void add(char a[],bool &f){
       int i=0,j=0,k=0;
       while(a[i]){
           int z=a[i]-'0';
           if(tre[k].nex[z]){
              j=tre[k].nex[z];
              tre[j].sum++;
              if(i==strlen(a)-1) f=1;
              if(tre[j].fa) f=1;
           }else{
              tre[k].nex[z]=++tot;
              j=tot;
              tre[j].init();
              tre[j].sum++;
           }
           k=j;
           i++;
       }
       tre[k].fa++;
    }
    /*bool query(string a){
       int i=0,j=0,k=0;
       while(i<a.size()-1){
          int z=a[i]-'0';
          if(tre[k].nex[z]){
             j=tre[k].nex[z];
             if(tre[j].fa) return 1;
          }else return 0;
          k=j;
          i++;
       }
    }*/
    char a[1001];
    int main(){
       int t;
       cin>>t;
       while(t--){
          int n;
          scanf("%d",&n);
          memset(tre,0,sizeof(tre));
          tot=0;
          bool fa=0;
          for(int j=0;j<n;j++){
              scanf("%s",a);
              if(!fa)
              add(a,fa);
          }
          if(fa){
             printf("NO
    ");
          }else{
             printf("YES
    ");
          }
       }
    }
  • 相关阅读:
    2、介绍在TensorFlow当中使用不同的方式创建张量tensor
    1、TensorFlow如何工作?
    1、
    7、Maven插件
    6、Maven仓库
    5、Maven-构建配置文件
    4、maven——构建生命周期
    3、示例(在java中使用JSON)
    2、json教程
    1、json背景
  • 原文地址:https://www.cnblogs.com/Dvelpro/p/9782891.html
Copyright © 2011-2022 走看看