/*
description:
輸入兩個整數n和sum,從數列1,2,3.......n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。
方法1:
注意到取n,和不取n個區別即可,考慮是否取第n個數的策略,可以轉化為乙個只和前n-1個數相關的問題。
如果取第n個數,那麼問題就轉化為「取前n-1個數使得它們的和為sum-n」,對應的**語句就是sumofknumber(sum - n, n - 1);
如果不取第n個數,那麼問題就轉化為「取前n-1個數使得他們的和為sum」,對應的**語句為sumofknumber(sum, n - 1)。
《程式設計之法》
參考:
author: jasonzhou
date: 2016-03-15
*/#include
#include
using
namespace
std;
list
list1;
void sumofknumber(int sum, int n)
list1.push_front(n); //典型的01揹包問題
sumofknumber(sum - n, n - 1); //「放」n,前n-1個數「填滿」sum-n
list1.pop_front();
sumofknumber(sum, n - 1); //不「放」n,n-1個數「填滿」sum
}int main()
尋找和為定值的多個數
程式設計求解 輸入兩個整數 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 對應的 語句就...
陣列 和為定值的多個數
題目描述 給定兩個整數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 ...