Maison > Article > développement back-end > Nombre maximum de bonbons pouvant être achetés
Nous obtenons un tableau candy[] avec la longueur stockée dans "size". Chaque élément de bonbons[i] a un numéro pour un bonbon de type i. Le but est d'acheter autant de bonbons que possible avec n'importe quelle somme d'argent. Les conditions sont les suivantes -
Si vous achetez X[i] de type i (0
X(j)
- Arr[] = { 1,3,5,2,6,7}.
- Nombre maximum de bonbons pouvant être achetés - 16
Explication - Bonbons de type d'achat i { 0,3,5,2,6,0 }
>Entrée - Arr[] = { 5,7,7,3,4}.
Sortie - Bonbons maximum pouvant être achetés - 10
Explication - Achat de bonbons de type i { 0,0,7,3,0 }
Le programme suivant La méthode utilisée dans est la suivante
Le tableau d'entiers candy[] est utilisé pour stocker le nombre de bonbons de type i.
La fonction maxCandies(int arr[], int n) est utilisée pour renvoyer le nombre total de bonbons pouvant être achetés.
Disons d’abord que nous avons acheté le dernier bonbon. buy=arr[n-1]
À partir de l'avant-dernier élément, for(i=n-2;i>=0;i--)
La variable x stocke les bonbons qui peuvent être achetés de la quantité de type actuelle. x=arr[i] ou buy-1, selon la valeur la plus petite.
Si x n'est pas zeo, ajoutez-le au total.
Si la somme est supérieure au montant de l'achat précédent, achat = x.
Retour aux résultats d'achat.
Exemple
#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; }
Output
Total Candies that can be bought: 13
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!