桶球问题
N個雞蛋分到M個籃子里(N>M),不能有空籃子,對于任意不大于于N的數,保證有幾個籃子的雞蛋數和等于此數,編程實現輸入N,M兩個數,輸出所有分雞蛋的方法
void combine(int rem, int curr, vector<int> &vec, int m) {if (rem ==0 && m ==0) {for(int i = 0; i < vec.size(); ++i)cout<< vec[i]<<" ";cout<<endl;return;}if (rem <= 0 || m <= 0)return;if (rem >= m*curr) {vec.push_back(curr);combine(rem - curr, curr, vec, m-1);vec.pop_back();}if (rem >= (curr + 1)*m)combine(rem, curr +1 ,vec, m); }int main() {vector<int> vec;combine(10,1,vec,4);return 0;}
總結
- 上一篇: 欧拉回路和哈密尔顿回路
- 下一篇: RTB