poj 3630 Phone List (字典树)

news/2024/12/28 22:27:43/

【题目描述】
给定 n 个长度不超过 10 的数字串,问其中是否存在两个数字串 S,T,使得 S 是 T 的前缀,多组数据。
【输入】
第一行一个整数 T,表示数据组数。
对于每组数据,第一行一个数 n,接下来 n 行输入 n 个数字串。(对于 100% 的数据,1≤T≤40,1≤n≤104​​ 。)
【输出】
对于每组数据,若存在两个数字串 S,T,使得 S 是 T 的前缀,则输出 NO ,否则输出 YES 。
请注意此处结果与输出的对应关系!
【输入样例】
2
3
911
97625999
91125426
5
113
12340
123440
12345
98346
【输出样例】
NO
YES

用插入函数模板,原来的find函数是用来查找是否存在一模一样的,不合适了
题目要求是否存在一个字符串是另一个的前缀
我们直接一边插入一边判断,判断是否有重复的地方
两种情况,一种是原来的树上已经插入过的树枝长,直接用x记录数组不等于0的个数(x一定的等于新插入的字符串长度)
一种是原来树上的树枝短,需要在循环的时候判断,中间某个点是否已经等于1(exist数组)

写的时候忘了更新cnt,把所有树都合一起了,半天没找着错,老是运行错误,气死了😑😑

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>using namespace std;int t,n;
string s;
int tr[100010][10];
int cnt=0;
int exist[100010];//储存该结点的结尾的字符串是否存在
int insert(string s)//插入函数,在插入的时候直接判断
{int p=0,x=0,y=0;int l=s.length();for(int i=0;i<l;i++){int c=s[i]-'0';if(tr[p][c]!=0) x++;//标记有多少重复 //当树上串长且完全重复,符合条件if(tr[p][c]==0) tr[p][c]=++cnt;//没有就申请新的结点p=tr[p][c];if(exist[p]==1) y=l;//如果已有,则说明树上串短}exist[p]=1;if(x==l||y==l) return 1;else return 0;
}int main()
{cin>>t;while(t--){cnt=0;//千万别忘了更新memset(tr,0,sizeof(tr));memset(exist,0,sizeof(exist));cin>>n;int flag=0;for(int i=1;i<=n;i++){cin>>s;if(insert(s)) flag=1;}if(flag==0) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

http://www.ppmy.cn/news/190298.html

相关文章

poj 3630 字典树

达成成就&#xff1a;手撕字典树 看代码知题意&#xff0c;水题 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #i…

戴尔计算机和台式机区别,工作站和台式机的区别有哪些?Precision 3630给你解答...

由于工作站与台式机拥有较为相似的主机外观,总是令很多人感到迷惑,工作站和台式机的区别是什么?为什么工作站的价格会高出台式机许多?工作站又能够实现哪些台式机无法实现的功能?其实简单来说,工作站是一种高端的通用微型计算机,其配置性能都为高效运作而服务。随着科技…

Linux下4G模块高新兴物联中兴ME3630拨号上网

Linux下4G模块高新兴物联ME3630拨号上网 实验硬件平台&#xff1a; 实验模块: 一、添加模组的PID/VIP到Linux内核中 代码文件&#xff1a;drivers/usb/serial/option.c 找到option_ids&#xff0c;添加对应的ID&#xff0c;这样USB才能识别到这个模块。 static struct us…

高新兴 ME3630-W 4G 模块 Android 平台适配

2019-04-26 关键字&#xff1a;高新兴 ME3630-W 适配、rk3128 移植 4G 模块 本篇文章系笔者在移植 高新兴物联 ME3630-W 4G 模块到运行着 Android4.4 操作系统的 rk3128 开发板上的一篇日志。文章以快速适配为目的进行讲解&#xff0c;不涉及一些步骤的原理讲解。 这款 4G 模块…

电话单POJ3630

电话单POJ3630 思路 题干在这&#xff1a;POJ3630 依次把电话号码插入字典树。如果一个号码插入过程中到了一个结束节点&#xff0c;或者插完这个号码并没有建立新节点&#xff0c;说明是no&#xff1b;否则是yes。 ac代码 #include<cstdio> #include<iostream>…

ME3630模块常用指令介绍

1、基本指令 ATCPIN &#xff1f; 该指令用于查询SIM卡的状态&#xff0c;主要是PIN码&#xff0c;如果该指令返回&#xff1a;CPIN:READY&#xff0c;则表明SIM卡状态正常&#xff0c;返回其他值&#xff0c;则有可能是没有SIM卡。 ATCSQ 该指令用于查询信号质量&#xff0c;返…

POJ3630

Tire树裸题&#xff0c;一开始写动态的字典树&#xff0c;然后TLE&#xff0c;每次new一个新节点耗费时间较多。后来改成数组模拟的。 //#include <bits/stdc.h> #include <cstdio> #include <cstring> #include <algorithm>using namespace std ; co…

ibm3630m4服务器装系统,ibm x3630m4安装Windows2008R2系统

服务器型号&#xff1a;IBM X3630 M4 系统&#xff1a;Windowsserver2008R2 需求&#xff1a; 远程指导客户在IBM system x3630 M4服务器上安装windowsserver2008R2系统&#xff0c;用时1个多小时&#xff0c;顺利安装上操作系统。 标准2U机架式 配置1个四核英特尔至强处理器E5…