poj 1002 java_POJ 1002题 解题报告

这个是超时版的:

#include

#include

using namespace std;

typedef struct TelephoneNumber{//表示电话号码的结构体

string number;//电话号码串

int prefix;//首数字

int count;//重复次数

}TelephoneNumber;

/*

#include

fstream fin ("input.txt",ios::in);

#define cin fin

//*/

struct TelephoneNumber Transform(struct TelephoneNumber m)

{

int i;

for(i=0;m.number[i]=='-';)

m.number.erase(i,1);

for(i=m.number.length()-1;m.number[i]=='-';i--)

m.number.erase(i,1);

for(i=0;i

if(m.number[i]=='-')

m.number.erase(i,1);

else

i++;

for(i=0;i<7;i++)

{

switch(m.number[i])

{

case 'A':

case 'B':

case 'C':

case '2': m.number[i]='2'; break;

case 'D':

case 'E':

case 'F':

case '3': m.number[i]='3'; break;

case 'G':

case 'H':

case 'I':

case '4': m.number[i]='4'; break;

case 'J':

case 'K':

case 'L':

case '5': m.number[i]='5'; break;

case 'M':

case 'N':

case 'O':

case '6': m.number[i]='6'; break;

case 'P':

case 'R':

case 'S':

case '7': m.number[i]='7'; break;

case 'T':

case 'U':

case 'V':

case '8': m.number[i]='8'; break;

case 'W':

case 'X':

case 'Y':

case '9': m.number[i]='9'; break;

}

}

m.number.insert((string::size_type)3,1,'-');//加上连接符

m.prefix=m.number[0]-'0';//给其首数字字段赋值

return m;

}

int main()

{

int i,j,T,flag=0;

struct TelephoneNumber m;

cin>>T;

struct TelephoneNumber *resultSet=new struct TelephoneNumber[T];//号码集

for(i=0;i

{

cin>>m.number;

resultSet[i]=Transform(m);

//cout<

}

for(i=0;i

{

resultSet[i].count=1;//初始化结构体中用于统计重复次数的count

if(resultSet[i].number=="")//跳过已搜索过的串

continue;

else

{

for(j=i+1;j

if(resultSet[i].number==resultSet[j].number)

{

resultSet[j].number="";//相同的只保留一个,其余的都清空,以后就不用重复搜索了

resultSet[i].count++;

}

}

}

for(i=0;i<=9;i++)

for(j=0;j

if(resultSet[j].count>1 && resultSet[j].prefix==i)//被清空的串的count值一定是1

{

flag=1;

cout<

}

if(!flag)

cout<

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值