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

โปรแกรมค้นหาผลรวมของอาร์เรย์ย่อยที่มีความยาวคี่ทั้งหมดใน Python


สมมติว่าเรามีอาร์เรย์ของค่าบวกที่เรียกว่า nums เราต้องหาผลรวมของอาร์เรย์ย่อยที่มีความยาวคี่ที่เป็นไปได้ทั้งหมด ดังที่เราทราบ subarray เป็นผลสืบเนื่องต่อเนื่องกันของอาร์เรย์ เราต้องหาผลรวมของอาร์เรย์ย่อยที่มีความยาวคี่ทั้งหมดของ nums

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,8,2,5,7] ผลลัพธ์จะเป็น อาร์เรย์ย่อยที่มีความยาวคี่ -

nums[0] = 3
nums[1] = 8
nums[2] = 2
nums[3] = 5
nums[4] = 7
nums[0..2], so sum = 13
nums[1..3], so sum = 15
nums[2..4], so sum = 14
nums[0..4] = 25
So total sum is 3+8+2+5+7+13+15+14+25 = 92

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

  • ทั้งหมด:=0

  • idx:=0

  • l:=รายการของดัชนีวางคี่ทั้งหมด

  • ในขณะที่ idx <ขนาดของ l ทำ

    • k:=l[idx]

    • สำหรับฉันในช่วง 0 ถึงขนาดของ nums ทำ

      • ถ้า i+k <ขนาดของ nums + 1 แล้ว

        • ทั้งหมด :=ยอดรวม + ผลรวมขององค์ประกอบทั้งหมดเป็น nums จากดัชนี i ถึง i+k-1

    • idx :=idx + 1

  • ผลตอบแทนรวม

ตัวอย่าง (Python)

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

def solve(nums):
   total=0
   idx=0
   l=[i for i in range(len(nums)+1) if i%2!=0]

   while(idx<len(l)):
      k=l[idx]
      for i in range(len(nums)):
         if i+k < len(nums)+1:
            total+=sum(nums[i:i+k])
      idx+=1
   return total

nums = [3,8,2,5,7]
print(solve(nums))

อินพุต

[3,8,2,5,7]

ผลลัพธ์

92