POJ_1002_487-3279
2010-07-16 20:37
441 查看
//排序 //可以用到<ctype.h>中的一些函数 //isalnum() 功能:判断字符变量c是否为字母或数字 //说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。 //isalpha() 判断字符ch是否为英文字母 //isdigit() 判断字符c是否为数字 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include<algorithm> using namespace std; char s[100002][50]; int num[28]={0,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0}; int cmp(const void* _a,const void* _b) { char *a=(char *)_a; char *b=(char *)_b; return strcmp(a,b); } int main() { freopen("E.9.dat","r",stdin); freopen("out.txt","w",stdout); int n; while(scanf("%d",&n)==1) { char temp[50]; int i,len,j,k,end=0,t=1; //存储输入数据,并进行预处理 for(i=0;i<n;i++) { scanf("%s",temp); len=strlen(temp); for(j=0,k=0;j<len;j++) { if(isalpha(temp[j])) { s[i][k++]=num[temp[j]-'A'+1]+'0'; } if(temp[j]>='0'&&temp[j]<='9') { s[i][k++]=temp[j]; } } s[i][k]='/0'; } //排序 qsort(s,n,sizeof(s[0]),cmp); //设置s 用于比较最后一个号码 s [0]='/0'; /*printf("----/n"); for(i=0;i<n;i++) printf("%s/n",s[i]); printf("----/n");*/ //查找,若有连续两个以上相同的号码,则将其按规定输出 //end用于判断是否有重复号码,end值不变则说明没有重复号码 for(i=1;i<=n;i++) { if(strcmp(s[i-1],s[i])==0) { t++; end=1; } else { if(t>1) { end=1; for(j=0;j<7;j++) { if(j==2) printf("%c-",s[i-1][j]); else printf("%c",s[i-1][j]); } printf(" %d/n",t); } t=1; } } if(end==0) printf("No duplicates./n"); } return 0; }
相关文章推荐
- poj 1002 487-3279
- 487-3279[POJ1002]
- poj 1002 487-3279
- 【POJ】1002 - 487-3279
- poj 1002 487-3279
- [POJ 1002] 487-3279 C++解题报告
- POJ 1002 487-3279
- poj 1002 487-3279
- POJ 1002 487-3279
- (POJ 1002) 487-3279
- POJ 1002 487-3279 G++
- POJ 1002 487-3279(map应用)
- POJ-1002 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之map解法