poj 1002 487-3279

本文讨论了如何通过修改字符数组长度解决POJ平台上的编程挑战题,涉及字符串匹配、排序算法及字符映射的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://poj.org/problem?id=1002

一开始char数组长度30时WA,改成200就通过了。


1128K 579MS

#include <iostream><span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">  </span></span>
#include <algorithm>
#include <string.h>
using namespace std;
struct phone_number{
	char num[10];
}pn[100005];
char map[26] = {'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};
char s[200];
int amt,flag;

int cmp(struct phone_number &pn1,struct phone_number &pn2){
	return strcmp(pn1.num,pn2.num)<0;
}

int main(){
	int i,j,k;
	scanf("%d",&amt);
	for(i=0;i<amt;i++){
		scanf("%s",s);
		k=0;
		for(j=0;j<strlen(s);j++){
			if(s[j]=='-'||s[j]=='Q'||s[j]=='Z') continue;
			if(s[j]>='A'&&s[j]<='Z')
				pn[i].num[k++]=map[s[j]-'A'];
			else pn[i].num[k++]=s[j];
			if(k==3) pn[i].num[k++]='-';
		}
	}
	sort(pn,pn+amt,cmp);
	k=1;
	for(i=0;i<amt;i++){
		if(strcmp(pn[i].num,pn[i+1].num)==0){
			k++;
		}
		else{
			if(k>1){
				printf("%s %d\n",pn[i].num,k);
				flag=1;
			}
			k=1;
		}
	}
	if(flag==0) printf("No duplicates.\n");
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值