| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:我的代码,WA了~~~~哭死,不知道什么原有啊!能考虑都考虑到了,请高手指点一下呀~~~In Reply To:我的代码,WA了~~~~哭死,不知道什么原有啊!能考虑都考虑到了,请高手指点一下呀~~~ Posted by:derness at 2007-07-23 18:49:34 > 运行所给的例子是对的。不知道是不是有什么特牛的数据不行?
> #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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator