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

โปรแกรมค้นหาการดำเนินการขั้นต่ำเพื่อให้อาร์เรย์เท่ากันโดยใช้ Python


สมมติว่าเรามีค่า n ให้พิจารณาอาร์เรย์ nums ที่มีองค์ประกอบ n โดยที่ arr[i] =(2*i)+1 สำหรับ i ทั้งหมด ในการดำเนินการครั้งเดียว เราสามารถเลือกดัชนี x และ y ได้ 2 ตัว โดยที่ 0 <=x, y

ดังนั้น ถ้าอินพุตเป็น n =4 ผลลัพธ์จะเป็น 4 ส่วน n อาร์เรย์คือ [1,3,5,7] ตอนนี้หลังจากดำเนินการครั้งแรก เราสามารถสร้างอาร์เรย์ได้เช่น [2,3,5,6 ] หลังจากการผ่าตัดครั้งที่สอง เราสามารถทำได้ [3,3,5,5] จากนั้นหลังจากครั้งที่สาม [4,3,4,5] และสุดท้าย [4,4,4,4] ตอนนี้ทุกอย่างเท่าเทียมกัน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตอบ:=0

  • ถ้า n เท่ากับ 1 แล้ว

    • กลับมาอีกครั้ง

  • q:=ผลหารของ (n/2) -1

  • เจ:=1

  • ในขณะที่ q>=0, ทำ

    • ans:=ans + (n-j)

    • q :=q - 1

    • เจ :=เจ + 2

  • กลับมาอีกครั้ง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

def solve(n):
   ans=0
   if n==1:
      return ans
   q=(n//2)-1
   j=1
   while q>=0:
      ans=ans+(n-j)
      q-=1
      j+=2
   return ans
n = 4
print(solve(n))

อินพุต

4

ผลลัพธ์

4