ホームページ  >  記事  >  バックエンド開発  >  購入できるキャンディーの最大数

購入できるキャンディーの最大数

王林
王林転載
2023-08-29 23:33:061224ブラウズ

購入できるキャンディーの最大数

「size」に格納された長さのcandy[]配列を取得します。 candies[i] の各要素には、タイプ i のキャンディーの番号があります。目標は、お金を使ってできるだけ多くのキャンディーを買うことです。条件は次のとおりです -

タイプ i (0

  • XX(j)

  • X(j)=0、タイプ j のキャンディーは購入されませんでした

##例を通して理解します。

入力 - Arr[] = { 1,3,5,2,6,7}。

出力 - 購入できるキャンディーの最大数 - 16

説明 - 購入タイプ i { 0,3,5,2, 6, 0 }

の Candy>Input - Arr[] = { 5,7,7,3,4 }.

Output - OK 購入したキャンディーの最大数 - 10

説明 - タイプ i のキャンディーを購入 { 0,0,7,3,0 }

以下で使用されるメソッドプログラムは次のとおりです

  • 整数配列 candies[] は、タイプ i のキャンディーの数を格納するために使用されます。

  • 変数「size」には、配列キャンディーの長さが格納されます。

  • 関数 maxCandies(int arr[], int n) は、購入できるキャンディーの総数を返すために使用されます。

  • まず、最後のキャンディーを買うとします。 buy=arr[n-1]

  • 最後から 2 番目の要素から開始します。for(i=n-2;i>=0;i--)

  • 変数 x には、現在の種類で購入できるキャンディーの数が格納されます。 x=arr[i] または buy-1 の小さい方。

  • x がゼオでない場合は、それを合計に追加します。

  • 合計が前回の購入金額より大きい場合、購入 = 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;
    }

    出力

    上記のコードを実行すると、次の出力が生成されます-

    rreeee

    以上が購入できるキャンディーの最大数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。