Не могу двинуться дальше, разжуйте пожалуйста решение способом комбинаторики, число перестановок без повторений.
Третий день сижу, видел готовые решения, но не могу их понять, сам только смог создать
String array[] = {"Мама", "Мыла", "Раму"};
int res = 1;
for(int i = 0; i <= array.lenght; i++)
res = res*i;
Вот решение которое мне сделали, но его как и те которые решили студенты тут не могу разобрать.
public static void main(String[] args) {
String array[] = new String[3];
array[0] = "Мама";
array[1] = "Мыла";
array[2] = "Раму";
prmt(array, 0);
}
private static void prmt(String[] pa, int i) {
if (i == pa.length - 1) {
arraout(pa);
} else {
for (int j = i; j < pa.length; j++) {
aswap(pa, i, j);
prmt(pa, i + 1);
aswap(pa, i, j);
}
}
}
static void aswap(String[] array, int index1, int index2) {
String tmp = array[index1];
array[index1]= array[index2];
array[index2] = tmp;
}
private static void arraout(String[] pa) {
String s = "[";
for (String a : pa) {
s += a + ", ";
}
s = s.substring(0, s.length() - 2);
s += "]";
System.out.println(s);
}
}
Видимо я не могу осознать алгоритм действий почему то... или еще что то
Я ни как не могу понять каким образом генерируется данная последовательность цифр (123 - 132 - 213 - 231), :
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1