SDUT-1591

来源:互联网 发布:python 使用多个def的 编辑:程序博客网 时间:2024/06/15 18:00

  交叉排序:偶数位置上的数从大到小排,奇数位置上的数从小到大排!注意是位置。。。

代码:

#include<bits/stdc++.h>using namespace std;int a[255],b[255],c[255];int cmp(int a,int b){    return a>b;}int main(){    int i,j,n,m,k=0,p=0;    cin>>n;    for(i=0;i<n;i++)    {        cin>>m;        if((i+1)%2==0)        {            b[k]=m;            k++;        }        else        {            a[p]=m;            p++;        }    }    sort(a,a+p);    sort(b,b+k,cmp);    p=k=0;    for(i=0;i<n;i++)    {        if((i+1)%2==0)        {            c[i]=b[k];            k++;        }        else        {            c[i]=a[p];            p++;        }    }    for(i=0;i<n-1;i++)        cout<<c[i]<<' ';    cout<<c[i]<<endl;    return 0;}

  代码写得并不好看!还需努力;写的时候没能一遍成功,所以就单步调试了一下,发现sort函数用错了;排序结束地址都多加了一!但只影响到了奇数位置的排序,并没有影响到偶数位置的排序,然后想了想为啥,发现数组中的元素的初始值都是零,很惊讶!所以奇数位置的排序一定会被影响的;偶数位置则不一定,因为题过了,所以后台测试数据应该都是大于等于零的!所以当排序结束地址多加了一时,奇数位置排序一定是错的!