計蒜客 三值排序(貪心)

2021-08-01 01:46:10 字數 686 閱讀 6076

排序是一種很頻繁的計算任務。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。

寫乙個程式計算出,計算出的乙個包括1、2、3三種值的數字序列,排成公升序所需的最少交換次數。

輸入第1行為類別的數量n(1≤n≤1000)

輸入第2行到第n+1行,每行包括乙個數字(1或2或3)。

輸出包含一行,為排成公升序所需的最少交換次數。

樣例輸入

922

1333

231

樣例輸出

4

分析:貪心思想:

將序列排序後,有值為1、2、3共有三個值段;另找三個變數x,y,z;

x:在值段1中不是1的個數;

y:在值段2中值為3的個數;

z:在值段3中值為2的個數;

最小交換次數,  x+max(y,z);

ac**:

#include#include#includeusing namespace std;

const int maxn=1000+10;

int a[maxn];

int b[maxn];

int main(){

int n;

while(scanf("%d",&n)==1){

for(int i=0;i

計蒜客 三值排序(貪心)

排序是一種很頻繁的計算任務。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。寫乙個程式計算出,計算出的乙個包括1 2 3三種值的數字序列,排成公升序所需的最少交換次數。輸入第1行為類別的數量n 1 n 1000...

計蒜客 三值排序

三值排序 排序是一種很頻繁的計算任務。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。寫乙個程式計算出,計算出的乙個包括1 2 3三種值的數字序列,排成公升序所需的最少交換次數。輸入第1行為類別的數量n 1 n...

計蒜客題目 三值排序

排序是一種很頻繁的計算任務。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。寫乙個程式計算出,計算出的乙個包括1 2 3三種值的數字序列,排成公升序所需的最少交換次數。輸入第1行為類別的數量n 1 n 1000...