123 排序


给你1 2 3 的混乱顺序问你最少几次能按升序排好

#include <iostream>

#include<stdio.h>
using namespace std;
int main()
{
    int n,a[1100],i,ge1=0,ge2=0,ge3=0,ge4=0,ge5=0,ge6=0,ge7=0,ge8=0,ge9=0,t,ge=0;
    scanf("%d",&n);
    for(i=0;i<=n-1;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]==1)
            ge1++;
        if(a[i]==2)
            ge2++;
        if(a[i]==3)
            ge3++;
    }
    for(i=0;i<=ge1-1;i++)
    {
        if(a[i]==2)
            ge4++;
        if(a[i]==3)
            ge5++;
    }
    for(i=ge1;i<=ge1+ge2-1;i++)
    {
        if(a[i]==1)
            ge6++;
        if(a[i]==3)
            ge7++;
    }
    for(i=ge1+ge2;i<=n-1;i++)
    {
        if(a[i]==1)
            ge8++;
        if(a[i]==2)
            ge9++;
    }
    if(ge4!=0&&ge6!=0)
    {
        t=ge4;
        if(ge4>ge6)
            t=ge6;
        ge+=t;
    }
    if(ge5!=0&&ge8!=0)
    {
        t=ge5;
        if(ge8<ge5)
            t=ge8;
        ge+=t;
    }
    if(ge7!=0&&ge9!=0)
    {
        t=ge7;
        if(ge7>ge9)
            t=ge9;
        ge+=t;
    }


    ge+=(ge4+ge5+ge6+ge7+ge8+ge9-ge*2)/3*2;
    printf("%d\n",ge);
    return 0;
}











猜你喜欢

转载自blog.csdn.net/najiuzheyangbaacm/article/details/79901765
123