在 C/C++ 中如何對二進位制字串進行排列以在指定索引範圍內獲得最大值?
假設給定一個僅包含 0 和 1 的字串,我們有 M 個不重疊的範圍 A、B(A <= B),更具體地說是 [A1, B1]、[A2, B2]、…、[AM, BM]。這些區間中的任意兩個都不重疊——正式地說,對於每個有效的 i、j,如果 i!=j,則要麼 Ai 任務是找到一個合法的或有效的排列,該排列將同時滿足以下兩個條件: 所有 M 個給定範圍內的數字之和最大。 字串在字典序上最大。字串 1100 在字典序上高於字串 1001。 在上面的例子中,我們首先在第 1 和第 2 個位置放 1,然後我們還有另一個 '1' 剩餘, 因此,我們用它來在字典序上最大化字串,並將它放在第 3 個位置,從而完成重排。示例
Input
11100
3
3 4
5 5
Output
00111
First we put 1’s in position 3 and 4 then in 5 as there are no 1’s left, the string formed is 00111.
Input
0000111
2
1 1
1 2
Output
1110000
廣告