在C语言的k个学生中平均分配的最大巧克力数量

我们获得了以阵列形式存在于连续盒子中的许多巧克力,以及一个k代表代表将分发这些巧克力的学生人数的数字k。这里的任务是选择连续的盒子,以使其中的巧克力总量可以平均分配给k个学生。另外,我们必须确保巧克力的数量最多。

为此,我们将从左到右遍历数组,开始添加巧克力数量,然后将总和除以k。如果将其完全除以余数等于0,则将此和存储在变量中。随着我们进一步前进,重复此过程,直到获得最大的和为止。问题是找到可被k整除的最大和子数组。

输入项 

Choco[]={ 1,2,4,5,2,8,3,5 } k=3

输出-将最大数量的巧克力平均分配给k个学生-5

说明-最大和子数组为{5,2,8}。巧克力的总和为15。平均分,所有3位学生获得的最大巧克力是5。

注意-方框是连续的,索引是{3,4,5}

输入项 

Choco[] = { 2,3,7,5,4,8,2,6 } k=5

输出-最多可在k名学生之间平均分配的巧克力数量-7

说明-最大和子数组为{3,7,5,4,8,2,6}。巧克力的总和是35。

平均分,所有5位学生获得的最大巧克力是7。

以下程序中使用的方法如下

  • 我们采用一个整数数组arr [],该数组在连续的容器中包含许多巧克力。

  • 元素“ n”的数量表示盒子的数量。

  • 不行 的学生“ k”作为输入。

  • 函数maxChocolate(int arr [],int n,int k)接受三个参数-数组,其大小和编号。学生k。

  • 我们将从开始使用for循环开始遍历arr []。

  • 取两个变量sum和maxSum。Sum存储子数组的连续元素之和。

  • maxSum用于存储到目前为止找到的最大和。

  • 在嵌套的for循环中,继续添加元素并检查sum%k是否给出余数0。

    同样,如果此总和> maxSum,则更新maxSum。

  • 最后,maxSum将具有最大值。可以平均分配给k个学生的巧克力。

  • 将结果返回为maxSum / k,即每个学生获得的巧克力数量。

示例

#include <stdio.h>

//查找最大数量

//巧克力要平均分配

// k个学生

int maxChocolates(int arr[], int n, int k){

   int sum;

   int maxSum = 0;

   for(int i=0;i<n;i++){

      sum=0;

      for(int j=i;j<n;j++){

         sum+=arr[j];

         if(sum%k==0 && sum>maxSum)

            maxSum=sum;

      }

   }

   //在“ k”个学生中平均分配

   return (maxSum / k);

}

int main(){

   int arr[] = { 2, 7, 6, 1, 4, 5 ,5, 3 };

   int n =8;

   int k =3;

   printf("Maximum number of chocolates to be distributed equally among k students: %d   ",maxChocolates(arr, n, k));

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Maximum number of chocolates to be distributed equally among k students − 11

以上是 在C语言的k个学生中平均分配的最大巧克力数量 的全部内容, 来源链接: utcz.com/z/345619.html

回到顶部