計蒜客題目 三值排序

2021-08-15 16:56:44 字數 578 閱讀 4506

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

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

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

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

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

樣例輸入

922

1333

231

樣例輸出

4

#includeint main()

;//陣列c用來儲存1、2、3的數量

for(int i=0;i思想:輸入的時候計算1、2、3的數量。首先,在排序後應該是1的裡面找其他數,若為2,則在應該是2的位置裡找1與之交換,若為3,則在應該是3的位置裡找1與之交換。遍歷結束後,還存在1中有2但2中是3的情況,交換這個,以排好1。之後同樣的再交換2與3即可。

總結:貪心的思想還是學的不熟,需要再多練習。這道題的思想就是,先以交換最少的方式對1排序,排好後以此類推再對2和3排序。

計蒜客 三值排序

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

計蒜客 三值排序(貪心)

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

計蒜客 三值排序(貪心)

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