1002 final.txt

来自「PKU ACM 1002 的源码,鉴于本人初学编程,水平不高,代码质量不敢保证」· 文本 代码 · 共 50 行

TXT
50
字号
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#define MAX 100000
char v[MAX][9];

int cmp(const void * a,const void * b)
{
 return strcmp((char *)a, (char *)b);
}

int change(char ch){
	if(ch>='0'&&ch<='9') return ch;
    else if(ch>='A'&&ch<='R') return (ch-'A')/3+'2';
	else if(ch=='S') return '7';
	else if(ch=='Q'||ch=='Z'||ch=='-') return 0;
	else return (ch-'T')/3+'8';
}


int main(){
	int duplicates=1;
	char s[100],ch,tch;
	int num,j,i,index,flag,size=0,time=1;
	scanf("%d ",&num);
	for(i=0;i<num;i++)
	{
		gets(s);
		j=0;flag=1;index=0;
		while(ch=s[j]){
			if(ch>='a'&&ch<='z') ch-=32;
			if(tch=change(ch)) v[size][index++]=tch;
			if(index==3) v[size][index++]='-';
			else if(index==8) {v[size][8]='\0';break;}
			j++;
		}
		size++;
	}
	qsort(v,size,9,cmp);
	for(i=1;i<size;i++){
		if(strcmp(v[i],v[i-1])==0) time++;
		else{
			if(time>1) {printf("%s %d\n",v[i-1],time);duplicates=0;time=1;}
		}
	}
	if (strcmp(v[i-2],v[i-1])==0&&time>1) {printf("%s %d\n",v[i-1],time);duplicates=0;}
	if(duplicates) printf("No duplicates.");
	
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?