Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm giá cuối cùng với chiết khấu đặc biệt trong cửa hàng bằng Python

Giả sử chúng ta có một mảng được gọi là giá trong đó giá [i] đại diện cho giá của mặt hàng thứ i trong một cửa hàng. Có một ưu đãi đặc biệt đang diễn ra, nếu chúng tôi mua món hàng thứ i, chúng tôi sẽ được giảm giá tương đương với giá [j] trong đó j là chỉ số tối thiểu sao cho j> i và giá món hàng thứ j nhỏ hơn hoặc bằng giá của mặt hàng thứ i (tức là giá [j] <=giá [i]), nếu không, chúng tôi sẽ không nhận được bất kỳ chiết khấu nào. Chúng ta phải tìm một mảng trong đó phần tử thứ i là giá cuối cùng mà chúng ta sẽ trả cho mặt hàng thứ i của cửa hàng có tính đến chiết khấu đặc biệt.

Vì vậy, nếu đầu vào là giá =[16,8,12,4,6], thì đầu ra sẽ là [8, 4, 8, 4, 6], vì giá của mặt hàng0 là 16, vì vậy chúng ta sẽ nhận được chiết khấu tương đương với giá [1] =8, khi đó, giá cuối cùng sẽ là 8 - 4 =4. Đối với mục 1, giá [1] là 8, chúng tôi sẽ nhận được chiết khấu tương đương với giá [3] =2, vì vậy, giá cuối cùng giá chúng ta sẽ trả là 8 - 4 =4. Đối với mặt hàng 2 có giá [2] là 12 và chúng ta sẽ nhận được giá trị chiết khấu giống như giá [3] =4, do đó, giá cuối cùng chúng ta sẽ trả là 12 - 4 =8. Và đối với mục 3 và 4, chúng tôi sẽ không nhận được bất kỳ chiết khấu nào.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đối với tôi trong phạm vi từ 0 đến kích thước của giá cả, hãy làm

    • đối với j trong phạm vi i + 1 đến kích thước của giá, thực hiện

      • nếu giá [i]> =giá [j], thì

        • giá [i]:=giá [i] - giá [j]

        • đi ra từ vòng lặp

      • nếu không,

        • j:=j + 1

  • trả lại giá

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(prices):
   for i in range(len(prices)):
      for j in range(i+1,len(prices)):
         if(prices[i]>=prices[j]):
            prices[i]-=prices[j]
            break
         else:
            j+=1
   return prices

prices = [16,8,12,4,6]
print(solve(prices))

Đầu vào

[16,8,12,4,6]

Đầu ra

[8, 4, 8, 4, 6]