Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Permu {
- public static void swap(int i1, int i2, int[][] digits) {
- int[] oldV1 = digits[i1];
- digits[i1] = digits[i2];
- digits[i2] = oldV1;
- }
- public static void recurse(int n, int[][] digits) {
- if (n == 1) {
- boolean Approved = true;
- for (int i = 0; i < digits.length; i++) {
- int[] v = digits[i];
- boolean Approved2 = false;
- for (int i2 = 1; i2 < v.length; i2++) {
- if (v[i2] == i) {
- Approved2 = true;
- }
- }
- if (Approved2 == false) {
- Approved = false;
- break;
- }
- }
- if (Approved == true) {
- System.out.println(digits.length);
- for (int i = 0; i < digits.length; i++) {
- System.out.print(digits[i][0]);
- }
- System.out.print("\n");
- }
- return;
- }
- for (int i = 0; i < n-1; i++) {
- recurse(n-1, digits);
- if (n % 2 == 0) {
- swap(i, n-1, digits);
- } else {
- swap(0, n-1, digits);
- }
- }
- recurse(n-1, digits);
- }
- public static void main(String[] args) {
- int[][] Digits = new int[][]{{2, 0, 3}, {9, 2, 3}, {7, 1}, {3, 0, 1, 2, 3}}; //Format: {{Value, AllowedIndex, AllowedIndex2...}, {Value, AllowedIndex, AllowedIndex2...}...}
- recurse(4, Digits);
- }
- }
Add Comment
Please, Sign In to add comment