我們得到了一個糖果[]數組,長度儲存在「size」中。每個元素 candies[i] 都有一個 i 類型糖果的編號。目標是用任意金額購買盡可能多的糖果。條件如下-
如果您購買類型i 的X[i] (0
X(j)
X(j)=0,沒有購買j類型的糖果
我們透過例子來理解。
輸入 - Arr[] = { 1,3,5,2,6,7 }。
輸出 - 最大值可以購買的糖果- 16
#說明 - 購買類型i { 0,3,5,2,6, 0 }
的糖果>輸入 - Arr[] = { 5,7,7,3,4 }.
輸出 - 可以購買的最大糖果- 10
解釋 - 購買類型i { 0,0,7,3,0 } 的糖果
整數陣列candies[]用於儲存類型i的糖果數量。
變數'size'儲存陣列糖果的長度。
函數 maxCandies(int arr[], int n) 用來傳回可購買的糖果總數。
首先假設我們買了最後一種糖果。 buy=arr[n-1]
從倒數第二個元素開始,for(i=n-2;i>=0;i--)
變數x儲存目前類型可以購買的糖果數量。 x=arr[i] 或 buy-1,以較小者為準。
如果 x 不是 zeo,則將其加到總數中。
如果總和大於之前購買的金額,則購買=x。
傳回購買結果。
即時示範
#include <stdio.h> int maxCandies(int arr[], int n){ int bought = arr[n - 1]; int total = bought; // Starting from second last for (int i = n - 2; i >= 0; i--) { // Amount of candies of the current // type that can be bought int x = arr[i]<bought-1?arr[i]:bought-1; if (x >= 0) { total += x; bought = x; } } return total; } int main(){ int candies[] = { 1,2,4,3,7 }; int size = 5; printf("Total Candies that can be bought: %d", maxCandies(candies, size)); return 0; }
如果我們執行上面的程式碼,它將產生以下輸出-
Total Candies that can be bought: 13
以上是最多可以購買的糖果數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!