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,
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP