Untitled
unknown
plain_text
a year ago
1.8 kB
4
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