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 minidick at 2003-12-18 20:54:36 on Problem 1088
In Reply To:帮忙看一下,是算法错了还是怎么的 Posted by:minidick at 2003-12-18 20:54:17
> void quick_sort(int *x, int low, int high)
> {
>  int i, j, t;
>  if (low < high) {
>   i = low;
>   j = high;
>   t = *(x+low);
>   while (i<j)
>   {
>    while (i<j && *(x+j)>t) 
>    {
>     j--; 
>    }
>    if (i<j) 
>    {
>     *(x+i) = *(x+j); 
>     i++; 
>    }
>    while (i<j && *(x+i)<=t)
>    {
>     i++; 
>    }
>    if (i<j)
>    {
>     *(x+j) = *(x+i); 
>     j--; 
>    }
>   }
>   *(x+i) = t; 
>   quick_sort(x,low,i-1);  
>   quick_sort(x,i+1,high);  
>  }
> }
> main()
> {
> 	int i, j, k = 1, r, c, n = 0, a[102][102], m[4] = {1, 102, -1, -102};
> 	int *p[10001] ;
> 	scanf("%d%d", &r, &c);
> 	for (i = 1; i <= c; i++)
> 		a[0][i] = a[r+1][i] = 32766;
> 	for (i = 1; i <= r; i++)
> 		a[i][0] = a[i][c+1] = 32766;
> 	for (i = 1; i <= r; i++)
> 		for (j = 1; j <= c; j++)
> 			scanf("%d",p[k++] = &a[i][j]);
> 	quick_sort(p, 1, r * c);
> 	for (i = 1; i <= r * c; i++) {
> 		k = 0;
> 		for (j = 0; j < 4; j++)
> 			if (*(p[i]+m[j]) <= *p[i] && *(p[i]+m[j]) > k)
> 				 k = *(p[i]+m[j]);
> 		if ((*p[i] = k + 1) > n) n = *p[i];
> 	}
> 	printf("%d\n", 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