All pastes #1008316 Raw Edit

Someone

public java v1 · immutable
#1008316 ·published 2008-05-05 15:58 UTC
rendered paste body
//By Razii based on version by Heiner Marxen public final class fannkuch{ public static void main(String[] args) {  int n = 11;  if(args.length == 1) n = Integer.parseInt(args[0]);  System.out.println("Pfannkuchen(" + n + ") = " + fannkuch(n)); }  static int fannkuch(final int n) {  int[] perm = new int[n];  int[] perm1 = new int[n];  int[] count = new int[n];  int flips;  int flipsMax;  int r;  int i;  int k;  int didpr;  final int n1 = n - 1;  if( n < 1 ) return 0;  for( i=0;i<n;++i ) perm1[i] = i;  /* initial (trivial) permu */ r = n;  didpr = 0;  flipsMax = 0;  for(;;)  {   if( didpr < 30 )   {    for( i=0;i<n;++i ) System.out.print (1+perm1[i]);    System.out.print("\n");    ++didpr;   }   for(;r!=1;--r )   {    count[r-1] = r;   }   if( ! (perm1[0]==0 || perm1[n1]==n1) )   {    flips = 0;    for( i=1;i<n;++i )    {     perm[i] = perm1[i];    }    k = perm1[0];        /* cache perm[0] in k */     do    {     /* k!=0 ==> k>0 */      int j;     for( i=1, j=k-1;i<j;++i, --j )     {      int t_mp = perm[i];      perm[i] = perm[j];      perm[j] = t_mp;     }     ++flips;     /* * Now exchange k (caching perm[0]) and perm[k] */      j=perm[k];     perm[k]=k;     k=j;    }    while(k != 0);    if( flipsMax < flips )    {     flipsMax = flips;    }   }   for(;;)   {    if( r == n )    {     return flipsMax;    }    /* rotate down perm[0..r] by one */     int perm0 = perm1[0];     i = 0;     while( i < r )     {      k = i+1;      perm1[i] = perm1[k];      i = k;     }     perm1[r] = perm0;        if( (count[r] -= 1) > 0 )    {     break;    }    ++r;   }  } }}