PKU-1002题超时了,郁闷!
来源:互联网 发布:com永久域名注册 编辑:程序博客网 时间:2024/05/16 02:10
今晚写了PKU-ACM上的1002号题,写好后在自己的机子上通过多组典型测试没有问题,但是上传到PKU上后,显示状态为“Time Limit Exceeded”,颇感郁闷啊,说明算法很烂!再重写吗?
代码如下:
[code]
#include <iostream>
#include <cctype>
#include <cstring>
class Tel
{
private:
char original[8];
public:
Tel();
Tel(char * str);
void show()const;
char convert(char);
friend void Count(const Tel * head, const int);
friend void Sort(Tel * tel_head, const int);
};
int main()
{
using namespace std;
int num;
while(!(cin>>num) || cin.get()!='/n' || num <0)
{
cin.clear();
if(num<0)
{
num=0;
continue;
}
while(cin.get()!='/n');
}
Tel * head = new Tel[num];
Sort(head, num);
Count(head, num);
delete [] head;
return 0;
}
Tel::Tel()
{
using namespace std;
for(int i=0;i<7;i++)
{
original[i] = cin.get();
if(original[i] == '-')
i -= 1;
else if((!(isalpha(original[i]))) && (!(isdigit(original[i]))))
i -= 1;
else if(original[i] == 'Q' || original[i] == 'Z' || toupper(original[i])=='Q' || toupper(original[i])=='Z')
i -= 1;
else if(islower(original[i]))
original[i] = toupper(original[i]);
original[i] = convert(original[i]);
}
original[7] = '/0';
cin.clear();
while(cin.get()!='/n');
}
void Tel::show()const
{
using namespace std;
for(int i=0;i<7;i++)
{
if(i==3)
cout <<"-";
cout <<original[i];
}
}
char Tel::convert(char ch)
{
if(isalpha(ch))
{
if(ch=='A' || ch=='B' || ch=='C')
ch = '2';
if(ch=='D' || ch=='E' || ch=='F')
ch = '3';
if(ch=='G' || ch=='H' || ch=='I')
ch = '4';
if(ch=='J' || ch=='K' || ch=='L')
ch = '5';
if(ch=='M' || ch=='N' || ch=='O')
ch = '6';
if(ch=='P' || ch=='R' || ch=='S')
ch = '7';
if(ch=='T' || ch=='U' || ch=='V')
ch = '8';
if(ch=='W' || ch=='X' || ch=='Y')
ch = '9';
}
return ch;
}
void Count(const Tel * head, const int num)
{
int count = 1;
int flag = 1, flag1 = 0,flag2 = 0;;
int i = 0;
while(i != num-1)
{
while(i != num-1 && flag == 1)
{
flag = strcmp(head[i].original, head[i+1].original);
if(flag == 0)
{
count++;
i++;
flag = 1;
}
else
{
flag = 2012;
flag2 = 1;
}
}
if(count >1)
{
head[i].show();
std::cout <<" "<<count<<std::endl;
flag1 = 1;
}
if(flag2==1)
i++;
if(i==num-1 && flag1 == 0)
std::cout <<"No duplicates.";
count = 1;
flag = 1;
}
if(num==1)
std::cout <<"No duplicates.";
}
void Sort(Tel * tel_head, const int num)
{
Tel * head = tel_head;
int i=0, flag, flag1 = 0;
char temp[8];
while(1)
{
for(int j=0;j<num-1;j++)
{
flag = strcmp(head[j].original, head[j+1].original);
if(flag > 0)
flag1 = 1;
}
if(flag1==0)
break;
while(i != num-1)
{
flag = strcmp(head[i].original, head[i+1].original);
if(flag>0)
{
strcpy(temp, head[i].original);
strcpy(head[i].original, head[i+1].original);
strcpy(head[i+1].original, temp);
}
i++;
}
i = 0;
flag1 = 0;
}
}
[/code]
- PKU-1002题超时了,郁闷!
- 郁闷了。。。
- 郁闷了
- 郁闷了~~
- 郁闷了。。。
- 郁闷了
- 郁闷了
- 郁闷了
- pku ACM 1007 编译超时咯
- 今天郁闷了
- 郁闷,要找合租了:(
- 郁闷,越来越菜了
- 郁闷了多天
- 郁闷,考试试了
- 太郁闷了
- 哎,郁闷了.
- 郁闷,又感冒了..
- 最近越来越郁闷了!
- arm-linux-gcc stdio.h no such file or directory错误
- Linux 下php的安装
- split分离字符串
- JAVA代码在图片上加入文字信息的代码实例
- Apache2 + Tomcat6配置负载均衡
- PKU-1002题超时了,郁闷!
- Java数据结构和算法--链表
- c++面试题
- C# c++注册组件ocx失败 You do not have a license to use this ActiveX control.
- php获取客户端IP地址的几种方法
- 2.9 线程与任务
- C#中的数据绑定
- EXTJS textfield的AUTOCOMPLETE事件
- 开始研究3D并用硬件加速器实现