用 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP