Heim > Web-Frontend > js-Tutorial > Hauptteil

Lustige Fragen zu JavaScript: Praktische Kombinationen von Permutationen

黄舟
Freigeben: 2017-02-04 15:08:36
Original
1299 Leute haben es durchsucht

Schauen wir uns zunächst dieses Bild an, das dem Tasten-Desktop altmodischer Phablet-Telefone ähnelt.

Lustige Fragen zu JavaScript: Praktische Kombinationen von Permutationen

Wenn wir die Taste „2“ drücken, können wir die drei Buchstaben „A“, „B“ und „C“ aufrufen.
Mit Ausnahme der Tasten „1“ und „0“ können andere Zifferntasten eine Vielzahl von Buchstaben aufrufen.
Die Frage ist nun: Wie viele alphanumerische Kombinationen erhalte ich, wenn ich vier beliebige Zifferntasten auswähle?
Zum Beispiel habe ich „0002“ ausgewählt, weil die Taste „0“ keinen entsprechenden Buchstaben hat und es daher nur drei Kombinationen davon gibt – „000A“, „000B“ und „000C“.
Nehmen wir ein komplizierteres Beispiel. Drücken Sie kontinuierlich „0023“, „0“ bleibt unverändert, „2“ kann „A“, „B“, „C“ entsprechen, „3“ kann „D“ entsprechen. „E“, „F“, dann sollte es entsprechend dem Wissen über Permutation und Kombination 1*1*3*3=9 Kombinationen geben.
Okay, mal sehen, wie wir dieses Problem lösen können.
Der erste Schritt besteht darin, eine Zuordnung basierend auf der Beziehung zwischen den Zifferntasten und den entsprechenden Buchstaben zu erstellen.

var map = {  
    1 : [ 1 ],  
    2 : [ "A", "B", "C" ],  
    3 : [ "D", "E", "F" ],  
    4 : [ "G", "H", "I" ],  
    5 : [ "J", "K", "L" ],  
    6 : [ "M", "N", "O" ],  
    7 : [ "P", "Q", "R", "S" ],  
    8 : [ "T", "U", "V" ],  
    9 : [ "W", "X", "Y", "Z" ],  
    0 : [ 0 ]  
};
Nach dem Login kopieren

Der zweite Schritt besteht darin, Rekursion zu verwenden, um Permutationen und Kombinationen zu lösen

function telephoneWords(digitString) {  
    var array = [];  
    var result = [];  
    digitString.split("").forEach(function(e) {  
        array.push(map[e]);  
    })  
    var traverse = function foo(from, to) {  
        if (to.length < 4) {  
            var cur = from.shift();  
            for (var i = 0; i < cur.length; i++) {  
                var newTo = to.slice(0);  
                newTo.push(cur[i]);  
                var newFrom = from.slice(0);  
                foo(newFrom, newTo);  
            }  
        } else {  
            result.push(to.join(""));  
        }  
    };  
    traverse(array, []);  
    return result;  
}
Nach dem Login kopieren

Das Obige ist der Inhalt von JavaScript-interessanten Fragen: praktische Permutationen und Kombinationen Weitere Informationen Verwandte Inhalte, achten Sie bitte auf PHP Chinese Net (www.php.cn)!


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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!