poj1002 487-3279
2014-06-17 21:19
295 查看
题目大意:
电话号码用一种能让人记住的方式输入,然后统计号码:有重复的输出号码,并输出重复次数;如果没有重复,则输出Noduplicates.
题目分析:
本来关键在于怎么统计电话号码,用一个大型数组,数组下标表示电话号码,数组内容表示电话号码重复的次数。
题目代码:
#include
#include
using namespacestd;
int count[10000000]; //用来对电话号码进行计数
voidchangeToInt(char *phone);
voidchangeToChar(int x);
int main()
{
char phone[20];
bool flag;
int n,len;
int i,j;
cin>>n;
memset(count,0,sizeof(count));
while(n--)
{
cin>>phone;
len=strlen(phone);
for(i=0;i
{
switch(phone[i])
{
case 'A':
case 'B':
case 'C':
{phone[i]='2';break;}
case 'D':
case 'E':
case 'F':
{phone[i]='3';break;}
case 'H':
case 'I':
case 'G':
{phone[i]='4';break;}
case 'J':
case 'K':
case 'L':
{phone[i]='5';break;}
case 'M':
case 'N':
case 'O':
{phone[i]='6';break;}
case 'P':
case 'R':
case 'S':
{phone[i]='7';break;}
case 'T':
case 'U':
case 'V':
{phone[i]='8';break;}
case 'W':
case 'X':
case 'Y':
{phone[i]='9';break;}
}
}
changeToInt(phone);
}
flag=true; //判断是否有重复的号码
for(i=0;i<10000000;i++)
{
if(count[i]>1)
{
changeToChar(i);
cout<<""<<count[i]<<endl;
flag=false;
}
}
if(flag)
cout<<"Noduplicates."<<endl;
return 0;
}
void changeToInt(char*phone) //转换为int用来计数
{
int len=strlen(phone);
int sum=0,i;
for(i=0;i
{
if(phone[i]=='-')
continue;
else
{
sum=10*sum+(phone[i]-'0');
}
}
count[sum]++;
}
void changeToChar(int x) //转换为char类型,如(0000000时sum=0,输出就要转换)
{
int temp=1000000;
int i;
for(i=1;i<=8;i++)
{
if(i==4)
{
cout<<"-";
continue;
}
cout<<x/temp;
x=x%temp;
temp=temp/10;
}
}
电话号码用一种能让人记住的方式输入,然后统计号码:有重复的输出号码,并输出重复次数;如果没有重复,则输出Noduplicates.
题目分析:
本来关键在于怎么统计电话号码,用一个大型数组,数组下标表示电话号码,数组内容表示电话号码重复的次数。
题目代码:
#include
#include
using namespacestd;
int count[10000000]; //用来对电话号码进行计数
voidchangeToInt(char *phone);
voidchangeToChar(int x);
int main()
{
char phone[20];
bool flag;
int n,len;
int i,j;
cin>>n;
memset(count,0,sizeof(count));
while(n--)
{
cin>>phone;
len=strlen(phone);
for(i=0;i
{
switch(phone[i])
{
case 'A':
case 'B':
case 'C':
{phone[i]='2';break;}
case 'D':
case 'E':
case 'F':
{phone[i]='3';break;}
case 'H':
case 'I':
case 'G':
{phone[i]='4';break;}
case 'J':
case 'K':
case 'L':
{phone[i]='5';break;}
case 'M':
case 'N':
case 'O':
{phone[i]='6';break;}
case 'P':
case 'R':
case 'S':
{phone[i]='7';break;}
case 'T':
case 'U':
case 'V':
{phone[i]='8';break;}
case 'W':
case 'X':
case 'Y':
{phone[i]='9';break;}
}
}
changeToInt(phone);
}
flag=true; //判断是否有重复的号码
for(i=0;i<10000000;i++)
{
if(count[i]>1)
{
changeToChar(i);
cout<<""<<count[i]<<endl;
flag=false;
}
}
if(flag)
cout<<"Noduplicates."<<endl;
return 0;
}
void changeToInt(char*phone) //转换为int用来计数
{
int len=strlen(phone);
int sum=0,i;
for(i=0;i
{
if(phone[i]=='-')
continue;
else
{
sum=10*sum+(phone[i]-'0');
}
}
count[sum]++;
}
void changeToChar(int x) //转换为char类型,如(0000000时sum=0,输出就要转换)
{
int temp=1000000;
int i;
for(i=1;i<=8;i++)
{
if(i==4)
{
cout<<"-";
continue;
}
cout<<x/temp;
x=x%temp;
temp=temp/10;
}
}
相关文章推荐
- POJ1002-487-3279
- POJ1002--487-3279 翻译
- POJ1002-487-3279
- POJ1002--487-3279 翻译
- poj1002 487-3279(电话号码重复次数)
- 快速排序 487-3279 poj1002
- POJ1002 487-3279【查表】(Bailian1002, Bailian2974)
- POJ1002 487-3279 直接哈希模拟
- poj1002 487-3279 (简单字符串处理)
- POJ1002 487-3279
- POJ1002-487-3279
- poj1002“487-3279”解题报告
- poj1002 487-3279
- poj1002-487-3279(字符串处理)
- POJ1002-487-3279 map应用
- POJ1002 487-3279
- POJ1002_487-3279(快速排序)
- POJ 1002 487-3279 与二维数组的快速排序
- 1002 487-3279
- POJ 1002 487-3279(map)