487-3279 (poj1002)
http://poj.org/problem?id=1002
这道题耗时一整天,终于搞定了。这道题一开始写的是超时,最后懂了,问题原因是有二重循环加strcmp比较,时间复杂度是O(n^3)所以超时了。
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<vector> using namespace std; char PanCh(char ch); struct point{ char str[15]; int num; }; int n; char a[100005][150]; vector<point> vec; bool Comp(const point &a,const point &b) {return strcmp(a.str,b.str)<0; } int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",a[i]);}for(int i=0;i<n;i++){int len=strlen(a[i]);char b[15];int k=0;for(int j=0;j<len;j++){if(a[i][j]=='-') continue;else if(k==3) {b[k++]='-';b[k++]=PanCh(a[i][j]);}else b[k++]=PanCh(a[i][j]);}b[k++]='\0';if(vec.size()==0) {point po;po.num=1;strcpy(po.str,b);vec.push_back(po);}else{for(int i=0;i<vec.size();i++){if(strcmp(b,vec.at(i).str)==0){vec.at(i).num++;break;}else if(i==vec.size()-1){point po;po.num=1;strcpy(po.str,b);vec.push_back(po);break;}}}}int flag=0;sort(vec.begin(),vec.end(),Comp);for(int i=0;i<vec.size();i++){if(vec.at(i).num!=1){printf("%s %d\n",vec.at(i).str,vec.at(i).num);flag=1;}}if(flag==0)puts("No duplicates.");return 0; } char PanCh(char ch){if(ch=='A'||ch=='B'||ch=='C'){return '2';}else if(ch=='D'||ch=='E'||ch=='F'){return '3';}else if(ch=='G'||ch=='H'||ch=='I'){return '4';}else if(ch=='J'||ch=='K'||ch=='L'){return '5';}else if(ch=='M'||ch=='N'||ch=='O'){return '6';}else if(ch=='P'||ch=='R'||ch=='S'){return '7';}else if(ch=='T'||ch=='U'||ch=='V'){return '8';}else if(ch=='W'||ch=='X'||ch=='Y'){return '9';}return ch; }
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<vector> using namespace std; char PanCh(char ch); struct point{ char str[20]; int num; }; int sum; point points[100005]; int n; char a[100005][150]; bool Comp(const point &a,const point &b) {return strcmp(a.str,b.str)<0; } int main(){sum=0;freopen("a.txt","r",stdin);scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",a[i]);}for(int i=0;i<n;i++){int len=strlen(a[i]);char b[15];int k=0;for(int j=0;j<len;j++){if(a[i][j]=='-'||a[i][j]=='Q'||a[i][j]=='Z') continue;else if(k==3) {b[k++]='-';b[k++]=PanCh(a[i][j]);}else b[k++]=PanCh(a[i][j]);}b[k++]='\0';if(sum==0) {point po;po.num=1;strcpy(po.str,b);points[sum]=po;sum++;}else{for(int i=0;i<sum;i++){if(strcmp(b,points[i].str)==0){points[i].num++;break;}else if(i==sum-1){point po;po.num=1;strcpy(po.str,b);points[sum]=po;sum++;break;}}}}sort(points,points+sum,Comp);int flag=0;for(int i=0;i<sum;i++){if(points[i].num!=1){flag=1;printf("%s %d\n",points[i].str,points[i].num);}}if(flag==0) printf("No duplicates.\n");return 0; } char PanCh(char ch){if(ch=='A'||ch=='B'||ch=='C'){return '2';}else if(ch=='D'||ch=='E'||ch=='F'){return '3';}else if(ch=='G'||ch=='H'||ch=='I'){return '4';}else if(ch=='J'||ch=='K'||ch=='L'){return '5';}else if(ch=='M'||ch=='N'||ch=='O'){return '6';}else if(ch=='P'||ch=='R'||ch=='S'){return '7';}else if(ch=='T'||ch=='U'||ch=='V'){return '8';}else if(ch=='W'||ch=='X'||ch=='Y'){return '9';}return ch; }
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<iostream> #include<algorithm> #include<map> #include<iomanip> using namespace std; char PanCh(char ch); int sum; int n; char a[100005][150]; map<int,int> ma; int main(){sum=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",a[i]);}for(int i=0;i<n;i++){int len=strlen(a[i]);char b[15];int k=0;for(int j=0;j<len;j++){if(a[i][j]=='-') continue;else b[k++]=PanCh(a[i][j]);}b[k++]='\0';int num= atoi(b);map<int ,int>::iterator l_it;l_it=ma.find(num);if(l_it==ma.end()){ma.insert(pair<int,int>(num,1));}else{ma[num]++;}}int flag=0;map <int,int>::iterator m1_Iter;for ( m1_Iter = ma.begin( );m1_Iter != ma.end( ); m1_Iter++ ){if(m1_Iter->second!=1){int k=m1_Iter->first;int time=m1_Iter->second;flag=1;cout<<setfill('0')<<setw(3)<<k/10000;cout<<'-';cout<<setfill('0')<<setw(4)<<k%10000;cout<<' '<<time<<endl;}}if(flag==0) printf("No duplicates.\n");return 0; } char PanCh(char ch){if(ch=='A'||ch=='B'||ch=='C'){return '2';}else if(ch=='D'||ch=='E'||ch=='F'){return '3';}else if(ch=='G'||ch=='H'||ch=='I'){return '4';}else if(ch=='J'||ch=='K'||ch=='L'){return '5';}else if(ch=='M'||ch=='N'||ch=='O'){return '6';}else if(ch=='P'||ch=='R'||ch=='S'){return '7';}else if(ch=='T'||ch=='U'||ch=='V'){return '8';}else if(ch=='W'||ch=='X'||ch=='Y'){return '9';}return ch; }
问题总结:(1)第一个代码用的是Vector,结果超时,主要是Vector排序耗时很长。
(2)用数组,但是仍然超时,主要就是O(n^3)的时间复杂度的问题,所以对于对于查找可以选择用map,对于比较可以选择将字符串转变成用int类型。容易忽视的是当类型为int时会忽视前面是0的情况,所以需要保持格式。
个人心得:对于一个问题,一定要考虑复杂度问题,很可能没有考虑好就会超时,而且对于使用的STL一定要考虑其复杂度!同时一定要考虑到问题的各个方面!
转载于:https://www.cnblogs.com/Yvettey-me/p/4696973.html
487-3279 (poj1002)相关推荐
- D - Fliptile POJ - 3279(翻转问题)
D - Fliptile POJ - 3279 题意: 给一个m*n的01矩阵,对某一块砖踩一脚,1->0 || 0->1, 求将整个举证全部变为0最少踩几次 典型的翻转问题,此类问题的特 ...
- POJ 3279(Fliptile)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑 ...
- leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)
485. Max Consecutive Ones https://leetcode.com/problems/max-consecutive-ones/ easy 题,思路不说了,直接上代码. cl ...
- mysql无法找到事件id100描述_解决“事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法找到”...
事件类型: 错误 事件来源: Zend Optimizer 事件种类: 无 事件 ID: 487 日期: 2006-8-18 事件: 0:17:36 用户: N/A 计算机: COMPUTER 描述: ...
- init_cheap: VirtualAlloc pointer is null, Win32 error 487
用mingw编译程序时报错: 0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 AllocationBas ...
- poj 3279 poj 1753
poj 3279: Description Farmer John knows that an intellectually satisfied cow is a happy cow who will ...
- POJ 3279 Fliptile
传送门:http://poj.org/problem?id=3279 Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- 解决“事件ID(487)的描述(在资源(Zend Optimizer)中)无法找到”问题
IIS+PHP+Zend服务器配置好并运行一段时间后,你可能在事件日志中看到如下信息:(以Windows服务器而言)事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法 ...
- pr cpu100%_PR插件proDAD4.0.487.1安装教程
插件下载 [名称]:Pr插件-proDAD4.0.487.1 [大小]:20.8 MB [语言]:简体中文 [安装环境]:Win7/Win8/Win10 [支持版本]:Pr CC2015-Pr CC2 ...
- asterisk 对接 移动IMS 外呼接通时返487错误(已解决)
症状: 1.呼入正常 2.外呼部分手机号正常 3.外呼部分号码时,外线一接通,IMS会返回487,然后就挂掉了 经查是maxptime 与移动IMS不匹配造成,移动要求是240,但是asterisk的 ...
最新文章
- linux shell合并文件命令paste
- 不用python编程,制作词云图
- Kafka剖析(一):Kafka背景及架构介绍
- sql优化的方法及思路_微生物发酵 技术优化思路 与方法
- 史上最简单MySQL教程详解(进阶篇)之索引及失效场合总结
- 8255工作方式2——双向选通输入输出(A口)
- TongWeb和Tomcat的区别
- Radius认证协议(六)报文属性
- 有软件测试台式电脑电源供电不足吗,电脑主机等电源供电不足的症状
- 报告显示,2019秋冬高端游南北极、欧洲最受欢迎,海岛热度不减
- 二维图形编辑系统c语言实现,实验四01二维图形的几何变换.doc-资源下载在线文库www.lddoc.cn...
- 腾讯云云开发CTA认证题库
- 华为云服务器不显示盘符,云服务器只有一个盘符可以
- 安卓实现音乐播放器(暂停,播放)
- PHP实现小程序微信支付V2获取prepay_id
- 统信UOS系统无法卸载软件怎么办
- android手写输入
- 捕捉RAISERROR异常
- 致象我这样的大龄青年
- python删除特定文件_python删除特定文件的方法 -电脑资料