Advertisement
Guest User

A326397

a guest
Aug 1st, 2019
117
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class A326397
  2. {
  3.      int initial[];
  4.      int current[];      
  5.      int permuState[];
  6.      int kArray[];
  7.      
  8.      A326397(int[] input){
  9.          
  10.           int initial[] = new int[input.length];
  11.           for(int i = 0; i< initial.length; i++){
  12.                initial[i]=input[i];
  13.           }
  14.          
  15.           current = initial;      
  16.           permuState = new int[initial.length];
  17.           kArray = new int[initial.length+1];
  18.           kArray[getK(current)]++;
  19.      }
  20.  
  21.       int getK(int a[]){
  22.           int k=0;
  23.           for(int i=0; i< a.length-1; i++){
  24.                if( Math.abs(a[i]-a[i+1])==1 || Math.abs(a[i]-a[i+1])==a.length-1){
  25.                     k++;
  26.                }
  27.           }
  28.           if( Math.abs(a[0]-a[a.length-1])==1 || Math.abs(a[0]-a[a.length-1])==a.length-1){ //
  29.                k++;
  30.           }
  31.           return k;
  32.      }
  33.      
  34.     void printArray(int[] a){
  35.         for (int i=0; i<a.length; i++)
  36.             System.out.print(a[i]/2 + " ");
  37.         System.out.println();
  38.     }
  39.  
  40.      void permutate(){
  41.           current = heapPermutation(current, permuState);
  42.           kArray[getK(current)]++;
  43.      }
  44.  
  45.      int[] heapPermutation(int a[], int[] permuState){
  46.           int i = 0;
  47.           while (i < current.length){
  48.                if (permuState[i] < i){
  49.                     if (i % 2 == 0){
  50.                          int temp = a[i];
  51.                          a[i] = a[0];
  52.                          a[0] = temp;                          
  53.                     } else {
  54.                          int temp = a[i];
  55.                          a[i] = a[permuState[i]];
  56.                          a[permuState[i]] = temp;                          
  57.                     }
  58.  
  59.                     permuState[i]++;
  60.                     i = 0;
  61.                     break;                    
  62.                } else {
  63.                     permuState[i] = 0;
  64.                     i++;
  65.                }
  66.           }
  67.           return a;
  68.      }
  69.      
  70.     public static void main(String args[])
  71.     {
  72.           for(int j = 3; j< 21; j++){
  73.                
  74.                int[] sequence = new int[j];
  75.                for(int k = 1; k<j+1;k++){
  76.                     sequence[k-1] = k;
  77.                }
  78.                
  79.                long iter = 1;
  80.                for(int i=0; i< sequence.length; i++){
  81.                     iter = iter * sequence[i];
  82.                }
  83.                A326397 obj = new A326397(sequence);
  84.                
  85.                for(long i = 1; i < iter; i++){
  86.                      obj.permutate();
  87.                }
  88.                obj.printArray(obj.kArray);
  89.           }
  90.     }
  91. }
Advertisement
RAW Paste Data Copied
Advertisement