陣列 和為定值的多個數

2021-07-11 19:31:08 字數 770 閱讀 9603

題目描述;

給定兩個整數sum和n,要求在1, 2, 3, …, n中找到所有和為sum的組合.

eg: sum = 6, n = 6

1 2 3 4 5 6

輸出:

6 5 + 1

4 + 2

3 + 2 + 1

分析:

使用遞迴的方式考慮,原問題可以分割為在你1, 2 , … , n -1中找和為sum - n的問題(sumofnumber(sum - n, n - 1))和在1, 2, … , n - 1中找和為sum的問題(sumofnumber(sum, n - 1)).

#include 

#include

using

namespace

std;

void sumofnumber(int sum, int n);

vector

vec;

int main()

void sumofnumber(int sum, int n)

cout

<< n << endl;

}vec.push_back(n); //將n放入解陣列,表示n是乙個解.

sumofnumber(sum - n, n - 1);

vec.pop_back();          //將n從解陣列中刪除,表示n不是乙個解.

sumofnumber(sum, n - 1);

}

尋找和為定值的多個數

程式設計求解 輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等於 m 要求將其中所有的可能組合列出來。include includeusing namespace std 全域性變數 listlist1 從1,2.n找到和為sum的數字 void find factor i...

尋找和為定值的多個數

輸入兩個整數n和sum,從數列1,2,3 n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。注意到取n,和不取n個區別即可,考慮是否取第n個數的策略,可以轉化為乙個只和前n 1個數相關的問題。如果取第n個數,那麼問題就轉化為 取前n 1個數使得它們的和為sum n 對應的 語句就...

github july 尋找和為定值的多個數

輸入兩個整數n和sum,從數列1,2,3.n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。解法 類揹包問題 遞迴問題 可以看出這是關於0 1揹包問題,可以將問題定義為f n,m 從1 n中選擇多個數,使得之和為m 那麼 1 選取n,則剩下從n 1個數中選擇和為m n的數,即求f...