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++;
	    }
	  }
	}