在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