⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 北大oj 1002 题目.cpp

📁 北大OJ上的题目
💻 CPP
字号:
#define MAXSIZE 100110
#include<stdio.h>
#include<string.h>

typedef struct {
	char a[MAXSIZE][10];
} sqlist;


void radixsort(sqlist &source, sqlist &destin, long n, long i)
{
	long j, memory[20], target;

	for(j = 0; j < 10; j ++) {
		memory[j] = 0;
	}
	for(j = 1; j <= n; j ++) { 
		memory[source.a[j][i] - '0'] ++;
	}
	for(j = 1; j < 10; j ++) {
		memory[j] += memory[j-1];
	}
	for(j = n; j > 0; j --) {
		target = memory[source.a[j][i] - '0'];
		strcpy(destin.a[target], source.a[j]);
		memory[source.a[j][i] - '0'] --;
	}
}


int main(void)
{
	long n, i, j, count;
	int k, l, flag;
	char str[100];
	sqlist datas, data;
	scanf("%ld", &n);
	for(i = 1; i <= n; i ++) {
		scanf("%s", str);
		for(k = 0, l = 0; str[k] != '\0'; k ++) {
			if(str[k] == '-') {
				l ++;
			} else if(l != 0){
				str[k - l] = str[k];
			}
		}
		str[k - l] = '\0';
		for(j = 0; str[j] != '\0'; j ++) {
			switch(str[j]) {
				case 'A': ;
				case 'B': ;
				case 'C': str[j] = '2'; break;
				case 'D': ;
				case 'E': ;
				case 'F': str[j] = '3'; break;
				case 'G': ;
				case 'H': ;
				case 'I': str[j] = '4'; break;
				case 'J': ;
				case 'K': ;
				case 'L': str[j] = '5'; break;
				case 'M': ;
				case 'N': ;
				case 'O': str[j] = '6'; break;
				case 'P': ;
				case 'R': ;
				case 'S': str[j] = '7'; break;
				case 'T': ;
				case 'U': ;
				case 'V': str[j] = '8'; break;
				case 'W': ;
				case 'X': ;
				case 'Y': str[j] = '9'; break;
			}
		}
		strcpy(datas.a[i], str);
	}

	for(i = 1; i <= n; i ++) {
		strcpy(data.a[i], "");
	}
	for(i = 3; i > 0; i --) {
		radixsort(datas, data, n, i * 2);
		radixsort(data, datas, n, i * 2 - 1);
	}
	radixsort(datas, data, n, 0);


	for(i = 2, count = 0, strcpy(str, data.a[1]), flag = 0; i <= n; i ++) {
		if(strcmp(str, data.a[i]) == 0) {
			count ++;
		} else {
			if(count != 0) {
				flag = 1;
				for( j = 0; j < 3; j ++) {
					printf("%c", str[j]);
				}
				putchar('-');
				for( j = 3; j < 7; j ++) {
					printf("%c", str[j]);
				}
				printf(" %ld\n", count + 1);
				count = 0;
			}
			strcpy(str, data.a[i]);
		}
	}
	if(count != 0) {
		flag = 1;
		for( j = 0; j < 3; j ++) {
			printf("%c", str[j]);
		}
		putchar('-');
		for( j = 3; j < 7; j ++) {
			printf("%c", str[j]);
		}
		printf(" %ld\n", count + 1);
		count = 0;
	}
	if(flag == 0) {
		printf("No duplicates.\n");
	}
	return 0;
}

⌨️ 快捷键说明

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