hdu 1671 Phone List

简介: 点击打开链接hdu 1671 题意:给定n个电话号码串,问这n个电话号码串中是否存在某一串是其它串的前缀,如果存在输出NO,否则YES 思路:把这n个电话号码串建立成字典树,在插入的时候我们直接判断当前插入的字符串是不是其它串的前缀或者其...

点击打开链接hdu 1671

题意:给定n个电话号码串,问这n个电话号码串中是否存在某一串是其它串的前缀,如果存在输出NO,否则YES

思路:把这n个电话号码串建立成字典树,在插入的时候我们直接判断当前插入的字符串是不是其它串的前缀或者其它串是不是这个串的前缀即可


代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 1000010;
const int N = 10;

struct Node{
    int mark; 
    Node* child[N];
};
Node node[MAXN];
Node* root;
int pos;

Node* newNode(){
    node[pos].mark = 0;
    for(int i = 0 ; i < N ; i++)
        node[pos].child[i] = NULL;
    return &node[pos++];
}

bool insert(char* str){
    int len = strlen(str);
    Node* s = root;
    bool isOk = false;
    for(int i = 0 ; i < len ; i++){
        if(s->mark == 1)
            return false;
        int num = str[i]-'0';
        if(s->child[num] == NULL){
            s->child[num] = newNode();
            isOk = true;
        }
        s = s->child[num];
    }
    s->mark = 1;
    return isOk;
}

int main(){
    int cas , n;
    bool ans;
    char str[MAXN];
    scanf("%d" , &cas);
    while(cas--){
       scanf("%d" , &n); 
       ans = true;
       pos = 0;
       root = newNode();
       while(n--){
           scanf("%s" , str);
           if(ans && !insert(str))
               ans = false;
       }
       if(ans)
           puts("YES");
       else
           puts("NO");
    }
    return 0;
}



目录
相关文章
poj 3630 Phone List
1 #include 2 #include 3 #include 4 #define N 100005 5 using namespace std; 6 int Trie[N][10]; 7 int nodeN; 8 int main() 9 { 10 in...
665 0
|
7月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1099 1
|
6月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
6月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法