日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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


題目:

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; }




















生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 色综合色综合网色综合 | 亚洲图片久久 | 亚洲欧洲成人av每日更新 | 亚洲精品观看 | 一区二区三区av在线 | 亚洲精品乱码久久久久久 | 国产91精品久久久久久久网曝门 | www一区| 国产欧美日本 | 亚洲在线免费观看 | 国产亚洲精品久 | 亚洲影院一区 | 国产真乱mangent | 最新精品在线 | 日韩在线精品视频 | 亚洲电影在线 | 国产精品久久久久久久久久妞妞 | 亚洲精品免费观看视频 | 日本精品一区二区三区在线观看视频 | 人人爽视频 | 日韩国产精品一区 | av中文字幕在线观看 | 一个色av| 欧美日韩在线免费 | 久久日韩精品 | av免费网站在线观看 | 高清成人 | jizzjizz中国丰满熟少妇 | 国产精品视频123 | 91偷拍精品一区二区三区 | 日韩欧美手机在线 | 亚洲一区二区综合 | 国产精品久久一区二区三区不卡 | 18视频网站在线观看 | 日本一区二区三区四区视频 | 欧洲亚洲精品久久久久 | 九九热在线播放 | 欧美日韩电影一区 | 免费视频一区二区 | 久久久国产精品一区二区三区 | 加勒比在线免费视频 |