Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

要不一起去找Nash?嘿嘿。看看我的吧,我的倒是没错,可是一直TLE。咱俩互相看看哈。

Posted by Nowitzki at 2007-02-27 01:03:11 on Problem 1002
In Reply To:小弟总是WA啊,希望各位路过的大侠帮忙看下代码,注释比较详细的,谢谢了,出门靠朋友嘛 Posted by:OUmaster at 2007-02-27 00:42:47
//------------1002       487-3279
#include<stdio.h>
#include<string.h>
void QuickSort(int used[][2],int p,int r)
{
	int x,i,j,temp,q;
	if (p<r) {
		x=used[r][0];
		i=p-1;
		for (j=p;j<=r-1;j++)
			if (used[j][0]<=x) {
				i++;
				temp=used[i][0];
				used[i][0]=used[j][0];
				used[j][0]=temp;
				temp=used[i][1];
				used[i][1]=used[j][1];
				used[j][1]=temp;
			}
		temp=used[i+1][0];
		used[i+1][0]=used[r][0];
		used[r][0]=temp;
		temp=used[i+1][1];
		used[i+1][1]=used[r][1];
		used[r][1]=temp;
		q=i+1;
		QuickSort(used,p,q-1);
		QuickSort(used,q+1,r);
	}
}

int main(void)
{
	int n;
	int used[100001][2];
	int total,i,j,k,number,l,count,newNum,multiply,numZero,start,duplicates;
	char read[100],out[100];
	scanf("%d",&n);
	total=0;
	for (i=1;i<=n;i++) {
		used[i][0]=0;
		used[i][1]=0;
	}
	for (i=1;i<=n;i++)
	{
		scanf("%s",read);
		l=strlen(read);
		number=0;
		k=1000000;
		multiply=0;
		count=7;       // count digits.
		numZero=0;
		for (j=0;j<=l-1;j++)
		{
			if (read[j]=='0' && start==0) numZero++;
			else start=1;
			if (read[j]=='-') continue;
			if ('0'<=read[j] && read[j]<='9') multiply=read[j]-'0';
			else {
				if ('A'<=read[j] && read[j]<='O') multiply=2+(read[j]-'A')/3;
				else {
					if (read[j]=='P' || read[j]=='R' || read[j]=='S') multiply=7;
					else {
						if (read[j]=='T' || read[j]=='U' || read[j]=='V') multiply=8;
						else {
							if (read[j]=='W' || read[j]=='X' || read[j]=='Y') multiply=9;
						}
					}
				}
			}
			number+=multiply*k;
			k/=10;
		}
		newNum=1;
		for (j=1;j<=total;j++)
			if (used[j][0]==number) {
				used[j][1]++;
				newNum=0;
				break;
			}
		if (newNum==1) {
			total++;
			used[total][0]=number;
			used[total][1]++;
		}
	}
	QuickSort(used,1,total);
	duplicates=0;
	for (i=1;i<=total;i++)
		if (used[i][1]>1) {
			itoa(used[i][0],out,10);
			l=strlen(out);
			for (j=l-1;j>=0;j--)
				out[j+7-l]=out[j];
			for (j=0;j<=6-l;j++)
				out[j]='0';
			for (j=0;j<=2;j++) printf("%c",out[j]);
			printf("-");
			for (j=3;j<=6;j++) printf("%c",out[j]);
			printf(" %d\n",used[i][1]);
			duplicates=1;
		}
	if (duplicates==0) printf("No duplicates.\n");
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator