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次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告