给你1 2 3 的混乱顺序问你最少几回能按升序排好ios
#include <iostream>spa
#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; }