首頁  >  文章  >  後端開發  >  最多可以購買的糖果數量

最多可以購買的糖果數量

王林
王林轉載
2023-08-29 23:33:061171瀏覽

最多可以購買的糖果數量

我們得到了一個糖果[]數組,長度儲存在「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中文網其他相關文章!

    陳述:
    本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除