百度2015春季實習生招聘附加題 01排序

2022-08-16 02:42:12 字數 974 閱讀 5112

給定乙個01串(僅由『 0』或『1』組成的字串),現在想把這個數字串排序成「非遞減」有序序列,請問至少需要多少次交換(任意兩個位置交換)? 

輸入描述:

輸入資料第一行是乙個正整數t(t<=100),表示有t組測試資料;

接下來的t行,每行給出01串。

資料保證——

50%的字串長度在[1,100 ]

95%的字串長度在[1,10000]

100%的字串長度在[1,1000000]

輸出描述:

對於每組測試資料,請輸出排成「非遞減有序序列」的最小交換次數。

每組輸出佔一行。

輸入例子:
3

0110

110

輸出例子:
011

題解:

因為輸入的序列僅由0和1組成,現在要求排序成非遞減序列,即」0」全部在左邊,「1」全部在右邊。

所以可以統計a[i]中"0"的個數num,那麼從0到num中如果存在「1」,就必然存在一次交換,統計的從0到num中"1"的數量即為答案。

時間複雜度o(n)。100%資料規模max_length=1e6,可以ac。

**:

1 #include2 #include3 #include

4using

namespace

std;

5const

int n=1e6+131;6

char

a[n];

7int

num;89

intmain()

1021

int p=len-num;

22 num=0;23

for(int i=0;i)

26 printf("

%d\n

",num);27}

28 }

百度2015春季實習生招聘附加題 01排序

給定乙個01串 僅由 0 或 1 組成的字串 現在想把這個數字串排序成 非遞減 有序序列,請問至少需要多少次交換 任意兩個位置交換 輸入描述 輸入資料第一行是乙個正整數t t 100 表示有t組測試資料 接下來的t行,每行給出01串。資料保證 50 的字串長度在 1,100 95 的字串長度在 1,...

01排序 百度2015春季實習生招聘附加題

程式設計題 01排序 給定乙個01串 僅由 0 或 1 組成的字串 現在想把這個數字串排序成 非遞減 有序序列,請問至少需要多少次交換 任意兩個位置交換 輸入描述 輸入資料第一行是乙個正整數t t 100 表示有t組測試資料 接下來的t行,每行給出01串。資料保證 50 的字串長度在 1,100 9...

百度2015春季實習生招聘附加題 01排序

給定乙個01串 僅由 0 或 1 組成的字串 如今想把這個數字串排序成 非遞減 有序序列,請問至少須要多少次交換 隨意兩個位置交換 輸入描寫敘述 輸入資料第一行是乙個正整數t t 100 表示有t組測試資料。接下來的t行。每行給出01串。資料保證 50 的字串長度在 1,100 95 的字串長度在 ...