首页 > 其他 > 详细

POJ_1002

时间:2019-10-11 22:38:49      阅读:95      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=1002

此题大意为输入一系列电话号,输出重复出现的电话号

输入:可以输入大写字母(除了Q和Z),数字或者横线(-)

           字母按拼音九键的对应规则,横线为无意义输入

算法:先把输入整理为七位数字,存进b[N]

           将b[N]用sort(b,b+n)排序

输出:遍历b,若有重复,记录重复次数,按111-1111 n格式输出(n为重复次数)

           若无重复,输出No duplicates.

//输入
//格式化输入
//直接插入排序
//输出重复
#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 100000
int main(){
    int n,i,j,p,q,sum;
    string s;
    int b[N+1],temp;
    char c[100];
    
    scanf("%d",&n);
    for(i=0;i<n+1;i++){
        b[i] = 0;
    }
    i = 0;
    
    while(i<n){                                        
        scanf("%s",c);
        
        p = 7;
        q = 1000000;
        temp = 0;
        for(j=0;j<strlen(c)&&p>0;j++,p--,q/=10){    //对输入数据进行加工 
            if(c[j]==A||c[j]==B||c[j]==C){
                temp += 2*q;
            }
            else if(c[j]==D||c[j]==E||c[j]==F){
                temp += 3*q;
            }
            else if(c[j]==G||c[j]==H||c[j]==I){
                temp += 4*q;
            }
            else if(c[j]==J||c[j]==K||c[j]==L){
                temp += 5*q;
            }
            else if(c[j]==M||c[j]==N||c[j]==O){
                temp += 6*q;
            }
            else if(c[j]==P||c[j]==R||c[j]==S){        //没有Q 
                temp += 7*q;
            }
            else if(c[j]==T||c[j]==U||c[j]==V){
                temp += 8*q;
            }
            else if(c[j]==W||c[j]==X||c[j]==Y){        //没有Z 
                temp += 9*q;
            }
            else if(c[j]>=0&&c[j]<=9){
                temp += (c[j]-0)*q;
            }
            else{
                p++;
                q *= 10;
            }
        }
        b[i] = temp;
        //cout<<temp;
/*        j = i;
        while(temp<b[j]){
            b[j+1] = b[j];
            j--;
        }
        b[j+1] = temp;
        //cout<<temp<<" "<<j+1<<endl;
        for(j=1;j<=i;j++){
            cout<<b[j]<<" "<<j<<endl;
        }
*/        i++;
    }//while
    sort(b,b+n);
    b[n] = -1;
    
    p = 0;
    q = 1;
    sum = 0;
    while(q<n){
        while(b[q]==b[p]){
            q++;
        }
        if(q-p>1){
            printf("%03d-%04d %d\n",b[p]/10000,b[p]%10000,q-p);
            sum++;
        }
        p = q;
        q = q+1;
    }
    if(sum==0){
        printf("No duplicates.\n");
    }
 
/*
    for(i=1;i<=n;i++){
        cout<<b[i]<<" "<<endl;
    }
    for(i=1,j=0;i<=sum;i++){
        //if(duplicate[i]>1){
            p = b[i]/10000;
            q = b[i]%10000;
            cout<<p<<"-"<<q<<" "<<duplicate[i]<<endl;
            j++;
        }
    }
*/
    return 0;
} 

 


————————————————
版权声明:本文为CSDN博主「abc827300139」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ABC827300139/article/details/101788281

POJ_1002

原文:https://www.cnblogs.com/stevenzrx/p/11657186.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!