POJ 1002 487-3279(水题)
2013-10-29 21:59
417 查看
没什么好说的,事先设置一个表,对应字母到数字的转换,读入每一位并对应转换成int存起来,排序后即可判断有多少重复,代码还是丑陋不堪,C和C++不分
#include<iostream> #include<string> #include<stdlib.h> using namespace std; int numint[110000]={0}; char number[110000][100]={0}; int compare(const void *a, const void *b) { return(*(int *)a-*(int *)b); } int main() { int n=0,i=0,j=0,N=0,point=1000000,d[40]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9},k=0; cin>>n; getchar(); for(i=0;i<n;i++) { gets(number[i]); N=strlen(number[i]); point=1000000; for(j=0;j<N;j++) { if(number[i][j]=='-') { continue; } if(number[i][j]<='9'&&number[i][j]>='0') { numint[i]+=(number[i][j]-'0')*point; point=point/10; continue; } numint[i]+=d[number[i][j]-'A']*point; point=point/10; } } qsort(numint,n,sizeof(int),compare); for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(numint[i]!=numint[j]) { if(j-i>1) { printf("%03d-%04d %d\n", numint[i]/10000, numint[i]%10000, j-i); i=j-1; k=1; break; } else { i=j-1; break; } } } if(numint[i]==numint[j-1]&&j==n&&i!=j-1) { printf("%03d-%04d %d\n", numint[i]/10000, numint[i]%10000, j-i); k=1; break; } } if(!k) { cout<<"No duplicates."<<endl; } }
相关文章推荐
- POJ 1002 487-3279 (模拟 水题)
- poj1002 487-3279 ——水题
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
- POJ水题1002 487-3279
- POJ 1002 487-3279 水题字符串
- poj 1002 487-3279
- POJ1002 487-3279
- POJ 1002 487-3279
- POJ 1002 解题报告 487-3279
- [POJ 1002] 487-3279 C++解题报告
- POJ 之 1002 :487-3279
- uva 755/poj 1002 487-3279
- POJ 1002 487-3279
- POJ-1002 487-3279
- POJ 1002 487-3279(Map)
- POJ 1002 487-3279 Trie题解
- Poj 1002 487-3279
- poj 1002 487-3279
- POJ 1002 487-3279(排序or不排序)
- poj 1002 487-3279