Permutari
by MariusNastasa
HTML
<h1>Permutari Backtracking</h1>
<input type="number" id="n">
<button onclick="calculeaza()">Afiseaza</button>
<div id="afisare"></div>
<h1> Permutari Backtracking recursiv</h1>
<input type="number" id="n">
<button onclick="PermutariRecursiv()">Afiseaza</button>
<div id="afisare"></div>
CSS
body{
background-color: moccasin;
}
JavaScript
var k = 0;
var s = [];
var valid = false;
s[k] = 0;
function calculeaza() {
var n = document.getElementById("n").value;
while (k >= 0) {
s[k]++;
valid = false;
while (!valid && s[k] <= n) {
if (ver(s, k + 1)) {
valid = true;
} else {
s[k]++;
}
}
if (valid) {
if (k == n - 1) {
document.getElementById("afisare").innerHTML += "<br>" + s;
} else {
k++;
s[k] = 0;
}
} else {
k--;
}
}
}
function ver(s, k) {
for (var i = 0; i < k - 1; i++) {
for (var j = i + 1; j < k; j++) {
if (s[i] == s[j])
return false;
}
}
return true;
}
//Recursiv
var solutii = [];
var intrare = [1, 2, 3];
var elemente = Array(intrare.length);
var solutie = Array(intrare.length);
function permutariRecursiv(k) {
var n = document.getElementById("n").value;
var i = 0;
if (k == intrare.length) {
return solutii.push(solutie.slice());
}
while (i < intrare.length) {
if (!elemente[i]) {
elemente[i] = true;
solutie[k] = intrare[i];
permutariRecursiv(k + 1);
elemente[i] = false;
}
document.getElementById("afisare").innerHTML += "<br>" + s;
}
}
function permutari(n) {
var i = 0;
if (n == intrare.length) {
return solutii.push(solutie.slice());
} else {
while (i < intrare.length) {
if (!elemente[i]) {
elemente[i] = true;
solutie[n] = intrare[i];
permutari(n + 1);
elemente[i] = false;
}
i++;
}
}
}