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,
广告