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

我的代码,WA了~~~~哭死,不知道什么原有啊!能考虑都考虑到了,请高手指点一下呀~~~

Posted by derness at 2007-07-23 18:49:34 on Problem 1007
运行所给的例子是对的。不知道是不是有什么特牛的数据不行?
#include<iostream>
using namespace std;
int  Partition(int a[], int ,int );
int  Fastsort(int a[], int ,int );
int  Swap(int&, int&);
int unsort_Num(char * a,int n)
{
	int count=0;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			if(a[i]>a[j])
				count++;
		}
	}
    return count;
}
int main(void)
{
	int n,m,i,ii,l,ln;
	cin>>n>>m;
	char **d= new char* [m];
	for(i = 0;i<m;i++){
        d[i] = new char [n];
		cin>>d[i];
	}
	int *unsortedness = new int[m];
	int *flag = new int [m];
	for(ii = 0;ii<m;ii++){
		flag[ii]=0;
		unsortedness[ii]=0;
		unsortedness[ii]= unsort_Num(d[ii],n);
	}
	int *copy= new int [m];
	for(ln=0;ln<m;ln++)
		copy[ln]=unsortedness[ln];
	Fastsort(copy,0,m);
	for(l=1;l<=m;l++)
	{
		for(int p=0;p<m;p++)
			if(copy[l] == unsortedness[p] && flag[p]==0){
				flag[p] = 1;//当数组有相同项时,flag跳过已经输出过的项。
				cout<<d[p]<<endl;
			}
	}
	system("pause");
	return 0;
}

int Partition(int a[], int p,int r)
{
	int x = a[p];
	int i = p-1;
	int j = r+1;
	while(1)
	{
		do{
			j--;	
		}while(a[j] > x);
		do{
			i++;
		}while(a[i] < x);
		if(i<j){
			Swap(a[i],a[j]);
		}
		else return j;
	}
}

int Fastsort(int a[], int p,int r)
{
	if(p < r)
	{
		int q = Partition(a, p, r);
		Fastsort(a, p, q);
		Fastsort(a, q+1,r);
	}
	else return 0;
}

int Swap(int& a,int& b)
{
	int temp =a;
	a = b;
	b = temp;
	return 0;
}

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