Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

จัดเรียงสตริงไบนารีเพื่อรับค่าสูงสุดภายในช่วงของดัชนี C/C++ หรือไม่


ในกรณีของสตริงที่กำหนดประกอบด้วย 0 และ 1 เท่านั้น เราจะได้รับ M ช่วงที่ไม่ตัดกัน A, B( A <=B), โดยเฉพาะอย่างยิ่ง [A1, B1], [A2, B2], …, [AM, BM], ช่วงเวลาสองช่วงเหล่านี้ไม่ทับซ้อนกัน — เป็นทางการ ในกรณีที่แต่ละ i ถูกต้อง j เช่นนั้น i!=j ไม่ว่าจะเป็น Ai

กิจกรรมคือการค้นหาการเปลี่ยนแปลงทางกฎหมายหรือที่ถูกต้องซึ่งจะถือสองเงื่อนไขต่อไปนี้พร้อมกัน -

  • ผลรวมของตัวเลขระหว่างช่วง M ทั้งหมดจะมากที่สุด

  • สตริงจะสูงสุด lexicographically สตริง 1100 เป็นศัพท์ที่สูงกว่าสตริง 1001

ตัวอย่าง

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

ในตัวอย่างข้างต้น เราใส่ 1 ในตำแหน่งที่ 1 และ 2 จากนั้นเราจะเหลือ "1" อีกอัน

ดังนั้นเราจึงใช้มันเพื่อเพิ่มสตริงพจนานุกรมให้ใหญ่สุด และวางไว้ในตำแหน่งที่ 3 และทำให้การจัดเรียงใหม่เสร็จสมบูรณ์