PKU 1002 487-3279
2010-01-27 01:05
417 查看
用普通的方法一个一个地计数然后再按字典排序就超时了.用快速排序之后就是字典顺序,并且可以按顺序算出个数.
#include<iostream> #include<string> #include<stdio.h> using namespace std; int w[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,0,7,8,8,8,9,9,9,0}; int change(string x)//将数据转化为数字 { int sum=0; for(int i=0;x[i]!='/0';i++) { if((x[i]>='0')&&(x[i]<='9')) { sum=sum*10+x[i]-'0'; } else if((x[i]>='A')&&(x[i]<='Z')) { sum=sum*10+w[x[i]-'A']; } } return sum; } int q[100000]; int b[100000]; int c[100000]; int v=1; int comp(const void *lhs, const void *rhs) { return *(int*)lhs - *(int*)rhs; } void main() { string a; int i=0; int m; cin>>m;for(int k=0;k<m;k++){b[k]=0;c[k]=1;} for(int l=0;l<m;l++) { cin>>a; q[l]=change(a); } qsort(q,m,sizeof(int),comp);//将数字进行快排 for(i=0;i<m;) { for(int j=i+1;q[i]==q[j];j++) {;} if(j-i>1){v=0;printf("%.3d-%.4d %d/n",q[i] / 10000,q[i] % 10000, j - i);} i=j; } if(v)cout<<"No duplicates."; }
相关文章推荐
- 487-3279 - PKU 1002
- POJ 1002求487-3279解题报告——【PKU ACM】
- 487-3279 - PKU 1002
- pku 1002 487-3279
- PKU 1002 487-3279 问题的解决
- PKU_1002_487-3279
- PKU-1002-487-3279
- PKU ACM 1002 487-3279 C++实现
- Pku acm 1002 487-3279 排序算法解题报告(一) ----二叉查找数(BST)
- POJ 1002 487-3279
- poj 1002 487-3279
- POJ1002《487-3279》方法:sort
- POJ 1002 487-3279
- poj 1002 487-3279
- PKU ACM 1002 487-3279
- poj1002 487-3279
- POJ 1002 487-3279 解题报告
- POJ 1002 487-3279
- POJ 1002 487-3279
- POJ 1002 487-3279