給定乙個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 #include4using
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 的字串長度在 ...