求和為n的所有組合

來源:互聯網
上載者:User
給定一個數 n

要求:
(1)等式左邊的整數取值為 1~n-1.
(2)要求等式左邊之和為n。

若 n = 3;1 + 1 + 1 = 3;1 + 2 = 3;

回複內容:

給定一個數 n

要求:
(1)等式左邊的整數取值為 1~n-1.
(2)要求等式左邊之和為n。

若 n = 3;1 + 1 + 1 = 3;1 + 2 = 3;

樓主可以去學習下 母函數

這應該是母函數的模板題

function calcN (n) {    var res = [],        cache = {};    loop(n);    function loop(k, arr) {        arr = arr || [];        var i = 1, count = k / 2 | 0;        cache[k] = true;        while (i <= count) {                        res.push(arr.concat([i, k - i]));            if (!cache.hasOwnProperty(i)) {                loop(i, [k - i].concat(arr));            }            if (!cache.hasOwnProperty(k - i)) {                loop(k - i, [i].concat(arr));            }            i++;                }  }  return res;}// 測試部分:console.log(calcN(5));// 輸出[ [ 1, 4 ],  [ 1, 1, 3 ],  [ 1, 1, 1, 2 ],  [ 1, 1, 1, 1, 1 ],  [ 1, 2, 2 ],  [ 2, 3 ] ]

C++的話基於上面改就好了,用mapvector

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.