多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > (hdu step 5.2.3)Phone List(在一堆號碼中,判斷是否有號碼是其它號碼的前綴)

(hdu step 5.2.3)Phone List(在一堆號碼中,判斷是否有號碼是其它號碼的前綴)

來源:程序員人生   發布時間:2015-04-08 08:59:04 閱讀次數:2816次


題目:

Phone List

Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 235 Accepted Submission(s): 92
 
Problem Description
Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the phone catalogue listed these numbers:
1. Emergency 911
2. Alice 97 625 999
3. Bob 91 12 54 26
In this case, it’s not possible to call Bob, because the central would direct your call to the emergency line as soon as you had dialled the first three digits of Bob’s phone number. So this list would not be consistent.
 
Input
The first line of input gives a single integer, 1 <= t <= 40, the number of test cases. Each test case starts with n, the number of phone numbers, on a separate line, 1 <= n <= 10000. Then follows n lines with one unique phone number on each line. A phone number is a sequence of at most ten digits.
 
Output
For each test case, output “YES” if the list is consistent, or “NO” otherwise.
 
Sample Input
2 3 911 97625999 91125426 5 113 12340 123440 12345 98346
 
Sample Output
NO YES
 
 
Source
2008 “Insigma International Cup” Zhejiang Collegiate Programming Contest - Warm Up(3)
 
Recommend
lcy


題目分析:

               這道題,屬于Trie的入門級別的題目。但是在這里先介紹1下不用Trie怎樣解決這道題。在1堆號碼中,

要判斷1個號碼是不是是其他號碼的前綴。我們可以先對這對號碼按字典序進行1下排序。然后順次判斷相鄰兩個號碼中是不是有號碼是其它號碼的前綴便可。整體的時間復雜度要比暴力做法的O(n^2)要好很多。


這里還需要介紹1下的是strncmp這個函數。

       strncmp(): 這個函數用來比較s1和s2字符串,這個函數將返回1個值, 它的符號與第1對不同的字符的比較結果相干。如果兩個字符串相等的話,strncmp將返回0。如果s1是s2的1個子串的話,s1小于s2。另外還有,函數 int strncmp (const char *s1, const char *s2, size_t size) 此函數與strcmp極其類似。不同的地方是,strncmp函數是指定比較size個字符。也就是說,如果字符串s1與s2的前size個字符相同,函數返回值為0。


代碼以下:

/* * c.cpp * * Created on: 2015年3月7日 * Author: Administrator */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 10001; char num_str[maxn][11];//用于存儲號碼字符串 /** * 讓號碼字符串按字典序升序排列 */ int cmp(const void* a,const void* b){ return strcmp((char*)a,(char*)b); } int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); int i; for(i = 0 ; i < n ; ++i){//順次讀入n個號碼 scanf("%s",num_str[i]); } qsort(num_str,n,sizeof(num_str[0]),cmp);//將n個號碼按字典序排列 bool flag = false;//用于標記是不是有號碼是其他號碼的前綴 for(i = 0 ; i < n⑴ ; ++i){//遍歷所有的號碼字符串 //如果有號碼的前n個字符與其他號碼的前n個字符是1樣的. if(strncmp(num_str[i],num_str[i+1],strlen(num_str[i] )) == 0){ flag = true;//.則表明該號碼是另外1個號碼的前綴 break;//跳出循環 } } if(flag == true){//如果由號碼是其它號碼的前綴 printf("NO ");//打印NO }else{//如果沒有號碼是其它號碼的前綴 printf("YES ");//打印YES } } return 0; }




















生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: jizz毛片| 羞羞色在线| 日韩手机在线免费视频 | www日本免费| 亚洲色图婷婷 | 美女视频一区二区三区 | 亚洲图片激情小说 | 999精品免费视频 | 亚洲综合天堂 | 欧美极度另类精品 | 国产在线乱码在线视频 | 中文字幕 国产 | 午夜在线观看视频在线播放版 | 日韩理伦片秋霞理伦 | 国产片一级毛片视频 | 最新中文字幕第一页 | 国产成人精品视频频 | 亚洲国产成人99精品激情在线 | 精品亚洲在线 | 91精品日韩 | 亚洲区小说区激情区图片区 | 欧美亚洲不卡 | 全免费a级毛片免费看不卡 全网毛片 | 91免费福利精品国产 | 久久久久免费精品国产 | 精品久久久久久久一区二区伦理 | 成人在线亚洲 | 欧美午夜色大片在线观看免费 | 男女视频在线观看免费 | 日韩亚洲欧美综合一区二区三区 | 欧美高清揄拍自拍视频网站 | 日本视频中文字幕一区二区 | 国产xxx护士爽免费看 | 一级日本特黄毛片视频 | 亚洲丶国产丶欧美一区二区三区 | 国产欧美精品国产国产专区 | 亚洲精品图区 | 国产成人乱码一区二区三区 | 国产精品中文字幕在线 | 国产性老妇女做爰在线 | 视频一区 中文字幕 |