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

Re:好奇怪的问题啊,就换一个变量就过了,各位高手 ,谁能解释一下

Posted by sbtdkj at 2004-11-09 13:57:37 on Problem 1002
In Reply To:好奇怪的问题啊,就换一个变量就过了,各位高手 ,谁能解释一下 Posted by:anonym11 at 2004-11-01 20:01:47
> 以下是错误程序 ,注意看划线部分
> #include<stdio.h>
> #include<stdlib.h>
> 
> int cmp ( const void *a ,const void *b ) 
> {
> 	int *m = (int *)a, *n = (int *)b ;
> 	if ( *m > *n )
> 		return 1 ;
> 	else
> 	if ( *m == *n )
> 		return 0 ;
> 	else
> 	if ( *m < *n )
> 		return -1;
> 	else
> 		return 0;
> }
> 
> int main ()
> {
> 	int d[26] = { 2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9 };
> 	int i , j , k, n ;
> 	int s[10000] ,tt  ;
> 	int  no[110000]={0} ;
> 	char temp[500] ;
> 	scanf ( "%d",&n ) ;getchar ();
> 	for ( i = 0 ;i  < n ;i ++ )
> 	{
> 		gets ( temp );
> 		for ( j = 0 ; temp[j] ;j ++ )
> 		{
> 			if ( temp[j] >= '0' && temp[j] <= '9' )
> 				no[i] = no[i] * 10 + temp[j] - '0' ;
> 			if ( temp[j] >= 'A' && temp[j] <= 'Z' )
> 				no[i] = no[i] * 10 + d[temp[j] - 'A'] ;
> 		}
> 	}
> 	
> 	qsort ( no, n, sizeof ( int ), cmp ) ;
> /////////////////////////////////////////////////////	
> 	for ( k = i = 0 ; i < n ;)   //s[k] 是号码重复次数
> 	{
> 		s[k] = 1 ;
>                  ~~~~~~~~~~~~~
> 		for ( j = i + 1;j < n  && no[j] == no[i] ;j ++ )
> 				s[k] ++ ;
> 			if ( s[k] > 1 )
> 			{
> 				tt  = no[i] / 10000 ;
> 				printf ( "%03d-%04d %d\n",tt ,no[i] % 10000,s[k] );
> 				k ++  ;
>                                    ~~~~~~~~~
> 			}
> 		i = j ;
> 	}
> 	if ( k == 0  )
> 		printf ( "No duplicates.\n" ) ;
> 	return 0;
> }
> //////////////////////////////////////
> 将斜线部分改为以下代码,AC
> mark = 1 ;
> 	for (  i = 0 ; i < n ;)
> 	{
> 		count = 1 ;
> 		for ( j = i + 1;j < n  && no[j] == no[i] ;j ++ )
> 				count  ++ ;
> 			if ( count > 1 )
> 			{
> 				mark = 0 ;
> 				tt  = no[i] / 10000 ;
> 				printf ( "%03d-%04d %d\n",tt ,no[i] % 10000,count );
> 			}
> 		i = j ;
> 	}
> 	if ( mark )
> 		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