Home computickets All possible combinations of one-dimensional array

All possible combinations of one-dimensional array

Author

Date

Category

Friends Tell me in theory, what are the practices to the approach to calculate the number of possible combinations from the elements of a one-dimensional array. And go through all possible sequences.

For example, there are elements of 2,45,16,34 – how to find out the possible combinations? (I do not ask the code, I ask the theory)


Answer 1, Authority 100%

permutations

Rearrangements is a combination of the initial array obtained by the permutation of the elements. The number of permutations AN = N! Algorithm for obtaining permutations by number (1..n!) Such:

Show code


Answer 2, Authority 19%

I do not know how it is done on PHP, but in theory you can apply the following algorithm:

Catch all the numbers from 0 (no element) to (2 ^ n) – 1 (all elements), where N is the length of the massive.

At every step of the search, we see all the bits of the number, and if the i-th bit is equal to one, the i-th element will be included in the combination.

For example, for three items:

  • 0 – no elements
  • 1 – (001) Only 1st element
  • 2 – (010) Only 2nd
  • 3 – (011) 2y and 1st
  • 4 – (100) Only 3rd
  • 5 – (101) 1y and 3rd
  • 6 – (110) 1y and 2nd
  • 7 – (111) 1y, 2nd, 3rd

Answer 3

var facts = [];
FUNCTION FACT (N) {
  if (n == 0 || n == 1) Return 1;
  if (Facts [N]) RETURN FACTS [N];
  Facts [N] = N * FACT (N-1);
  RETURN FACTS [N];
}
FUNCTION PERMUTIATION (INDEX, A) {
  var n = a.length;
  var i = index + 1;
  var res = [];
  for (var t = 1; t & lt; = n; t ++) {
    VAR F = FACT (N-T);
    var k = math.floor ((i + F-1) / F);
    res.push (a.splice (K-1,1) [0]);
    i - = (k - 1) * f;
  }
  if (a.length) res.push (A [0]);
  RETURN RES;
}
FUNCTION LOG () {
 var msg = array.prototype.slice.call (arguments) .join ("");
 Document.getelementByid ("Log"). Value + = "\ N" + MSG;
 Console.log (arguments);
}
VAR M = ["P", "O", "B", "A", "E", "C", "P", "R", "O", "C", "AND", " "];
For (var i = 0; i & lt; FACT (M.Length); I ++) {
  log (i, permutation (i, m.slice (0)). join (""));
}

Programmers, Start Your Engines!

Why spend time searching for the correct question and then entering your answer when you can find it in a second? That's what CompuTicket is all about! Here you'll find thousands of questions and answers from hundreds of computer languages.

Recent questions