和等於 m的任意可能組合

2021-06-04 23:03:40 字數 825 閱讀 8070

程式設計求解:

輸入兩個整數 n 和 m,從數列1,2,3.......n 中 隨意取幾個數,

使其和等於 m ,要求將其中所有的可能組合列出來.

//coder:lee

//20120315

#include

#include

#include

using namespace std;

//solution1

void combine(int beg,int end,int getn,vector&v,int m)

if(sum==m)

cout<}

return;

}for (int i=beg;i<=end;i++)

}void finddigitsequeltom(int n,int m)//遞迴解法

}//solution2

void finddigitsequeltomnorecurion(int n,int m)//類似0-1揹包問題,非遞迴解法

else if (sum+front==m)//等於m,輸出容器中的數字,pop容器,更新front

else//大於m,pop容器,更新front

front++;

while(front>n&&!index.empty())//如果front越界,容器非空,則pop容器,更新front,直到小於n}}

//solution3

int sum=0;

void backtrack(int n,int m,vector&v,int i)

else

return;}}

int main()

最少的硬幣組合出1到m之間的任意值(貪婪演算法)

首先判斷有無解,如果最小面額硬幣大於1則無解,因為搭配不出1。如果有1則有解,因為所有面額都可以由1堆積出來。接下來思考乙個問題,假設當前硬幣可以組合出1到5的任意面額,那麼新增一枚面額為6的硬幣就可以搭配出1到11的任意面額。考慮1 i 1已經構出,那麼再加一枚什麼面值的硬幣最優,顯然選一枚 su...

二叉樹 任意路徑和等於sum

給定二叉樹和乙個常數sum,求二叉樹中路徑和等於sum的所有路徑個數,這些路徑可以是任意起點和終點,但必須是按照從父節點到子節點的路徑 方法一 強遍歷,對所有節點,以該節點為起點,遍歷其所有子節點,求路徑和等於sum的個數,時間複雜度o n 2 public int pathsum treenode...

排列組合(包含所有組合可能和指定元素個數的組合)

當元素個數少時.元素組合方式 f 1 a a f 2 a,b b ba a f 3 a,b,c c cb cba ca b ba a f 4 a,b,c,d d dc dcb dcba dca db dba da c cb cba ca b ba a f n 由上表可以得出,n 個元素的所有組合方式...