Heim > Backend-Entwicklung > PHP-Tutorial > Finden Sie alle Kombinationen, deren Summe n ergibt

Finden Sie alle Kombinationen, deren Summe n ergibt

WBOY
Freigeben: 2016-08-08 09:06:36
Original
2299 Leute haben es durchsucht

Gegeben eine Zahl n

Anforderungen:
(1) Der Wert der ganzen Zahl auf der linken Seite der Gleichung ist 1~n-1.
(2) Es ist erforderlich, dass die Summe auf der linken Seite der Gleichung beträgt N.

<code>若 n = 3;
1 + 1 + 1 = 3;
1 + 2 = 3;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

Gegeben eine Zahl n

Anforderungen:
(1) Der Wert der ganzen Zahl auf der linken Seite der Gleichung ist 1~n-1.
(2) Es ist erforderlich, dass die Summe auf der linken Seite der Gleichung beträgt N.

<code>若 n = 3;
1 + 1 + 1 = 3;
1 + 2 = 3;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Der Poster kann gehen und lernen 母函数

Dies sollte eine Vorlagenfrage für die übergeordnete Funktion sein

<code>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 ] ]</code>
Nach dem Login kopieren
Für

C ändern Sie es einfach basierend auf dem oben Gesagten und verwenden Sie map und vector

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage