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

จำนวนการดำเนินการขั้นต่ำในอาร์เรย์เพื่อทำให้องค์ประกอบทั้งหมดเป็น 0 โดยใช้ C ++


คำชี้แจงปัญหา

กำหนดอาร์เรย์ขนาด N และแต่ละองค์ประกอบเป็น 1 หรือ 0 ภารกิจคือการคำนวณจำนวนการดำเนินการขั้นต่ำที่จะดำเนินการเพื่อแปลงองค์ประกอบทั้งหมดเป็นศูนย์ หนึ่งสามารถดำเนินการด้านล่างการดำเนินงาน -

หากองค์ประกอบเป็น 1 คุณสามารถเปลี่ยนค่าของมันเป็น 0 แล้ว -

  • หากองค์ประกอบที่ต่อเนื่องกันถัดไปคือ 1 องค์ประกอบนั้นจะถูกแปลงเป็น 0 โดยอัตโนมัติ

  • หากองค์ประกอบที่ต่อเนื่องกันเป็น 0 อยู่แล้วจะไม่มีอะไรเกิดขึ้น

ถ้า arr[] ={1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1} จำเป็นต้องมี 4 การดำเนินการเพื่อทำให้องค์ประกอบทั้งหมดเป็นศูนย์ 

อัลกอริทึม

1.หากองค์ประกอบปัจจุบันเป็น 1 ให้เพิ่มการนับและค้นหา 0 ถัดไปเนื่องจาก 1 ที่ต่อเนื่องกันทั้งหมดจะถูกแปลงเป็น 0.2 โดยอัตโนมัติ คืนจำนวนสุดท้าย

ตัวอย่าง

#include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) โดยใช้เนมสเปซ std;int performMinOperation(int *arr, int n){ int i, cnt =0; สำหรับ (i =0; i