C++程序:计算分配给m个朋友的糖果数组


假设我们有两个数字n和m。Amal有n颗糖果和m个朋友。他想给每个朋友一份糖果作为礼物。Amal计划送出所有糖果,并且他想以最平均的方式做到这一点。他想选择这样的A[i],其中A[i]是第i个朋友礼物中的糖果数量,最大A[i]与最小A[i]的差异尽可能小。我们必须找到数组A。

问题类别

编程中的各种问题可以通过不同的技术来解决。为了解决一个问题,我们首先必须设计一个算法,为此我们必须详细研究特定问题。如果同一个问题反复出现,可以使用递归方法;或者,我们也可以使用迭代结构。可以使用if-else和switch case等控制语句来控制程序中逻辑的流程。有效地使用变量和数据结构可以提供更简单的解决方案以及轻量级、低内存需求的程序。我们必须查看现有的编程技术,例如分治法、贪心算法、动态规划,并找出它们是否可行。这个问题我们可以通过一些基本的逻辑或暴力方法来解决。请遵循以下内容以更好地理解这种方法。

因此,如果我们问题的输入类似于n = 15;m = 4,则输出将为[3, 4, 4, 4]

步骤

为了解决这个问题,我们将遵循以下步骤:

for initialize j := m, when j > 0, update (decrease j by 1), do:
   z := n / j
   n := n - z
   print z

示例

让我们看看下面的实现,以便更好地理解:

#include <bits/stdc++.h>
using namespace std;
void solve(int n, int m){
   int z;
   for (int j = m; j > 0; j--){
      z = n / j;
      n = n - z;
      cout << z << ", ";
   }
}
int main(){
   int n = 15;
   int m = 4;
   solve(n, m);
}

输入

15, 4

输出

3, 4, 4, 4,

更新于:2022年4月7日

240次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告