計蒜客 三值排序

2022-03-23 04:17:35 字數 971 閱讀 4923

三值排序

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

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

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

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

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

樣例輸入

922

1333

231

樣例輸出

4

是乙個貪心的思想。x=位置為1的地方非1的個數;y=位置為2的地方3的個數;z=位置為3的地方的2的個數。

ans=x+max(y,z);

1 #include"

iostream

"2 #include"

algorithm"3

#define max 10000

4using

namespace

std;56

int a[max],num[4];7

intn, n1,n2,n3;89

10void msort(int n, int *a)

1117

18for (int i = num[1]; i< num[1]+num[2]; i++)

1923

24for (int i = num[1] + num[2]; i)

2529}30

31int

main()

3240

41msort(n, a);

4243

if (n2>n3) n1 +=n2;

44else n1 +=n3;

45 cout<4647 system("

pause");

48 }

計蒜客 三值排序(貪心)

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

計蒜客 三值排序(貪心)

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

計蒜客題目 三值排序

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