Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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


「サイズ」で保存された長さのキャンディー[]の配列が提供されます。各要素candies[i]には、タイプiのキャンディーの数があります。目標は、任意の金額でできるだけ多くのキャンディーを購入することです。条件は与えられた通りです-

タイプi(0 <=X [i] <=candies [i])のX [i]を購入する場合、すべてのj(1 <=j <=i)について、少なくとも次の条件のいずれかが真でなければなりません。

  • 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のキャンディーの数を格納するために使用されます。

  • 可変の「サイズ」は、アレイキャンディーの長さを格納します。

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

  • まず、最後の種類のキャンディーを購入したとします。 Buyed =arr [n-1]

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

  • 変数xは、購入できる現在のタイプのキャンディーの量を格納します。 x =arr[i]またはbuyed-1のいずれか少ない方。

  • xがzeo以外の場合は、これを合計に追加します。

  • 合計が以前に購入した値よりも多い場合は、buyed=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

  1. C++でN*Nチェス盤に配置できる最大のビショップ

    チェス盤のサイズを示す入力Nが与えられます。ここでのタスクは、Nの任意の値について、2人のビショップが互いに攻撃できないようにNXNチェス盤に配置できるビショップの数を見つけることです。例を挙げて理解しましょう。 入力 − n =2 出力 − N * Nチェス盤に配置できる最大のビショップ− 2(上記のように) 説明 −上に示したように、矛盾しない位置は司教が配置されている場所だけです。せいぜい2X2チェス盤のビショップ。 入力 − n =5 出力 − N * Nチェス盤に配置できる最大ビショップ:8(上記のように) 以下のプログラムで使用されているアプローチは次のとおりで

  2. C++で直角二等辺三角形に収まる正方形の最大数

    与えられたタスクは、底辺が「s」の二等辺三角形の中に収まる、辺が「a」の正方形の最大数を見つけることです(二等辺三角形には少なくとも2つの等しい辺があります)。 例を使用して、私たちがしなければならないことを理解しましょう: 入力 s=5, a=1 出力 10 説明 −基数の平方数は、sをaで割り、1を引くことで計算できます。したがって、基数の平方数=5/1 – 1 =4 同様に、下の4つの正方形を配置すると、base(s-a)の新しい二等辺三角形が得られます。次に同じ手順を繰り返して3つの正方形を取得し、1つの正方形が上に配置されるまで続けます。 入力 s=7, a=2 出力