poj 4089:电话号码
来源:互联网 发布:淘宝网沙滩半身裙 编辑:程序博客网 时间:2024/05/16 22:48
poj 4089:电话号码
题目
给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如:
Emergency 911
Alice 97 625 999
Bob 91 12 54 26
在这个例子中,我们不可能拨通Bob的电话,因为Emergency的电话是它的前缀,当拨打Bob的电话时会先接通Emergency,所以这些电话号码不是一致的。
每个测试样例的第一行是一个整数n,1 ≤ n ≤ 10000,其后n行每行是一个不超过10位的电话号码。
2391197625999911254265113123401234401234598346
NOYES
解题方案
这个题目子问题
(1)字符串完全匹配
我想到的是用map去做,对于每一个电话,其长度为length,然后我们可以求出length个前子串,然后去匹配,如果能匹配到,那么电话有冲突,否则没有
data.txt
2391197625999911254265113123401234401234598346
代码
#include <iostream>#include <map>#include <fstream>#include <string>using namespace std;void read_data();bool main_solution( string * data,int n );int main(){read_data();system( "pause" );return 0;}bool main_solution( string * data,int n ){map<string,bool> mymap ;string substr ;for(int i=0;i<n;i++){for(int j=1;j <= data[i].length();j++){substr = data[i].substr(0,j) ;if( mymap.find(substr) != mymap.end() ){return false;}}mymap.insert( make_pair( data[i] , true ));}return true;}void read_data(){ifstream reader;reader.open("data.txt");int t ;string * data;reader>>t;for(int j=0;j<t;j++){int n ;reader>>n ;data = new string[n];for( int i=0;i<n;i++ ){reader>>data[i];}bool result = main_solution( data,n );if(result) cout<<"YES"<<endl;else cout<<"NO"<<endl;delete [] data;}reader.close();}
0 0
- poj 4089:电话号码
- poj 1002 (电话号码)
- 4089:电话号码
- POJ 1002 电话号码字符串处理
- poj 1002 电话号码查重
- poj 1002 电话号码\字符串处理
- 电话号码转换与统计(POJ-1002)
- POJ 1002 电话号码排序查重
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 电话号码
- 现代信息检索作业5
- 职场分享:职场中你需要培养的习惯
- 在线重定义
- (5) Cocos2d-x 3.x开发——导入Cocostudio资源
- 【cocos2dx 3.2】瓦片地图制作
- poj 4089:电话号码
- nginx 请求失败代码解析
- http://blog.csdn.net/zh8727/article/details/39394561
- ERROR 2003 (HY000): Can't connect to MySQL server on '***.**.***.***' (110)
- 可以下拉刷新、上拉获取更多的SwipeRefreshAndLoadLayout
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- split函数处理mysql时间问题及截取url
- Azure入门学习(三)
- C语言中Const指针变量(常指针)