用 C++ 計算將數字分成幾部分的方法數


給定一個正數 N,目標是計算將數字 N 分成 3 部分的方法數。這些部分可以相等,也可以不相等。N 的範圍在 [1, 5000] 之間。

我們將使用三個 for 迴圈來表示數字的 3 個部分。在最內層迴圈中檢查三個數的總和是否等於 N。如果相等,則遞增方法計數。

讓我們透過例子來理解。

輸入 − N=5

輸出 − 將 N 分成 3 部分的方法數:2

解釋 − 5 可以表示為 (1,1,3) 和 (1,2,2) 的和。

輸入 − N=9

輸出 − 將 N 分成 3 部分的方法數:7

解釋 − 9 可以表示為以下和:(1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (2, 2, 5), (2, 3, 4) 和 (3, 3, 3)。

下面程式中使用的方法如下

  • 我們取一個整數 N,其初始值在 1 到 5000 之間。

  • 函式 divideN(int n) 接收 n 並返回將 n 分成 3 部分的方法數。

  • 將初始變數 count 設定為 0,表示方法數。

  • 使用三個 for 迴圈遍歷數字的每一部分。

  • 最外層迴圈從 1<=i

  • 檢查 i、j 和 k 的和是否等於 n。如果相等,則遞增 count。

  • 所有迴圈結束後,count 將包含將 n 分成三個部分的總方法數。

  • 返回 count 作為結果。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int divideN(int n){
   int count = 0;
   for (int i = 1; i < n; i++){
      for (int j = i ; j < n; j++){
         for (int k = j; k < n; k++){
            int sum=i+j+k;
            if(sum==n)
               { count++; }
         }
      }
   }
   return count;
}
int main(){
   int N=500;
   cout <<endl<< "Number of ways to divide N in 3 parts : "<<divideN(N);
   return 0;
}

輸出

如果執行以上程式碼,將生成以下輸出:

Number of ways to divide N in 3 parts: 20833

更新於:2020-10-31

363 次瀏覽

開啟您的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.