Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class A326397
- {
- int initial[];
- int current[];
- int permuState[];
- int kArray[];
- A326397(int[] input){
- int initial[] = new int[input.length];
- for(int i = 0; i< initial.length; i++){
- initial[i]=input[i];
- }
- current = initial;
- permuState = new int[initial.length];
- kArray = new int[initial.length+1];
- kArray[getK(current)]++;
- }
- int getK(int a[]){
- int k=0;
- for(int i=0; i< a.length-1; i++){
- if( Math.abs(a[i]-a[i+1])==1 || Math.abs(a[i]-a[i+1])==a.length-1){
- k++;
- }
- }
- if( Math.abs(a[0]-a[a.length-1])==1 || Math.abs(a[0]-a[a.length-1])==a.length-1){ //
- k++;
- }
- return k;
- }
- void printArray(int[] a){
- for (int i=0; i<a.length; i++)
- System.out.print(a[i]/2 + " ");
- System.out.println();
- }
- void permutate(){
- current = heapPermutation(current, permuState);
- kArray[getK(current)]++;
- }
- int[] heapPermutation(int a[], int[] permuState){
- int i = 0;
- while (i < current.length){
- if (permuState[i] < i){
- if (i % 2 == 0){
- int temp = a[i];
- a[i] = a[0];
- a[0] = temp;
- } else {
- int temp = a[i];
- a[i] = a[permuState[i]];
- a[permuState[i]] = temp;
- }
- permuState[i]++;
- i = 0;
- break;
- } else {
- permuState[i] = 0;
- i++;
- }
- }
- return a;
- }
- public static void main(String args[])
- {
- for(int j = 3; j< 21; j++){
- int[] sequence = new int[j];
- for(int k = 1; k<j+1;k++){
- sequence[k-1] = k;
- }
- long iter = 1;
- for(int i=0; i< sequence.length; i++){
- iter = iter * sequence[i];
- }
- A326397 obj = new A326397(sequence);
- for(long i = 1; i < iter; i++){
- obj.permutate();
- }
- obj.printArray(obj.kArray);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement