码迷,mamicode.com
首页 > 其他好文 > 详细

poj - 1002题解

时间:2017-08-22 13:16:05      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:--   return   处理   count   main   ace   dup   stream   code   

题意:给定一个字符串,按一定格式处理后排序并输出

题解:转换成7位数字来处理即可,输出的时候注意格式。

  1     #include<iostream>
  2     #include<algorithm>
  3     #include<string>
  4     using namespace std;
  5     long a[100001];
  6     bool com(const int &x,const int&y)
  7     {
  8         return x<y;
  9     }
 10     int main()
 11     {
 12         int n;
 13         cin>>n;
 14         for(int i=1;i<=n;i++)
 15         {
 16             string s;
 17             cin>>s;
 18             for(int j=0;j<s.length();j++)
 19             {
 20                 if(s[j]==Q||s[j]==Z||s[j]==-)
 21                 {
 22                     continue;
 23                 }
 24                 if(s[j]==A||s[j]==B||s[j]==C)
 25                 {
 26                     s[j]=2;
 27                 }
 28                 if(s[j]==D||s[j]==E||s[j]==F)
 29                 {
 30                     s[j]=3;
 31                 }
 32                 if(s[j]==G||s[j]==H||s[j]==I)
 33                 {
 34                     s[j]=4;
 35                 }
 36                 if(s[j]==J||s[j]==K||s[j]==L)
 37                 {
 38                     s[j]=5;
 39                 }
 40                 if(s[j]==M||s[j]==N||s[j]==O)
 41                 {
 42                     s[j]=6;
 43                 }
 44                 if(s[j]==P||s[j]==R||s[j]==S)
 45                 {
 46                     s[j]=7;
 47                 }
 48                 if(s[j]==T||s[j]==U||s[j]==V)
 49                 {
 50                     s[j]=8;
 51                 }
 52                 if(s[j]==W||s[j]==X||s[j]==Y)
 53                 {
 54                     s[j]=9;
 55                 }
 56             }
 57             long k=0;
 58             long m=1;
 59             for(int j=s.length()-1;j>=0;j--)
 60             {
 61                 if(s[j]==-||s[j]==Q||s[j]==Z)
 62                 {
 63                     continue;
 64                 }
 65                 else
 66                 {
 67                     k+=((int)s[j]-(int)0)*m;
 68                     m*=10;
 69                 }
 70             }
 71             a[i]=k;
 72         }
 73         sort(a+1,a+n+1,com);
 74         bool check=true; 
 75         int t=0;
 76         int count=1;
 77         for(int i=2;i<=n+1;i++)
 78         {
 79             if(i<=n&&a[i]==a[i-1])
 80             {
 81                 t=a[i];
 82                 count++;
 83             }
 84             else
 85             {
 86                 if(count>=2)
 87                 {
 88                     int k=a[i-1];
 89                     int t1=k/10000;
 90                     cout<<t1/100;
 91                     cout<<(t1-t1/100*100)/10;
 92                     cout<<t1%10;
 93                     cout<<"-";
 94                     t1=k%10000;
 95                     cout<<t1/1000;
 96                     t1=t1-t1/1000*1000;
 97                     cout<<t1/100;
 98                     t1=t1-t1/100*100;
 99                     cout<<t1/10;
100                     cout<<t1%10;
101                     cout<<" "<<count<<endl;
102                     check=false;
103                 }
104                 count=1;
105             }
106         }
107         if(check)
108         {
109             cout<<"No duplicates.";
110         }
111         return 0;
112     }

 

poj - 1002题解

标签:--   return   处理   count   main   ace   dup   stream   code   

原文地址:http://www.cnblogs.com/shao0099876/p/7410953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!