Untitled
unknown
plain_text
2 years ago
1.8 kB
7
Indexable
import java.util.Arrays;
public class SinhHoanVi {
public static void main(String[] args) {
int[] mang = {1, 2, 3}; // Thay đổi mảng theo nhu cầu của bạn
int[][] maTranHoanVi = sinhVaLuuHoanVi(mang);
// In ra ma trận hoán vị
for (int[] hoanVi : maTranHoanVi) {
System.out.println(Arrays.toString(hoanVi));
}
}
public static int[][] sinhVaLuuHoanVi(int[] mang) {
int n = mang.length;
int[][] maTranHoanVi = new int[factorial(n)][n];
// Sinh hoán vị và lưu vào ma trận
int index = 0;
permuteAndStore(mang, 0, maTranHoanVi, index);
return maTranHoanVi;
}
private static void permuteAndStore(int[] mang, int index, int[][] maTranHoanVi, int maTranIndex) {
if (index == mang.length - 1) {
// Copy hoán vị vào ma trận
System.arraycopy(mang, 0, maTranHoanVi[maTranIndex], 0, mang.length);
maTranIndex++;
} else {
for (int i = index; i < mang.length; i++) {
// Hoán đổi phần tử tại vị trí index và i
int temp = mang[index];
mang[index] = mang[i];
mang[i] = temp;
// Đệ quy để sinh hoán vị tiếp theo
permuteAndStore(mang, index + 1, maTranHoanVi, maTranIndex);
// Hoàn ngược lại hoán vị để thử các trường hợp khác
temp = mang[index];
mang[index] = mang[i];
mang[i] = temp;
}
}
}
private static int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
}Editor is loading...
Leave a Comment