Stacks of Flapjacks UVA 薄饼排序问题

//

有点类似栈和队列的操作,但在这里可以用纯数组模拟出来。

 

#include <iostream>

#include <cstring>

#include <cstdio>

#include <algorithm>

using namespace std;

int a[32],b[32];

int main()

{    

int u=0,j,k;

    while(cin>>a[u])

    {      

   b[u]=a[u];  

       if(getchar()=='\n')

        {           

    u+=1;   

          for(int i=0;i<u;++i)  

           {      

           if(i)   

     cout<<" ";         

        cout<<a[i];

            }    

         cout<<endl;  

           sort(b,b+u);  

           for(i=u-1;i>=0;--i)     

        {       

          for(j=0;j<u;++j)   

              {        

             if(b[i]==a[j] && i!=j)

                    {          

                 if(j==0)     

         cout<<u-i<<" ";            

               else

           cout<<u-j<<" "<<u-i<<" ";                      

         int v=0,c[32];                      

         for(k=i;k>j;--k)      

        c[v++]=a[k];         

                  for(k=0;k<=j;++k)

            c[v++]=a[k];

                        for(k=i+1;k<=u-1;++k)

            c[v++]=a[k];

                        for(k=0;k<v;++k)

              a[k]=c[k];  

                       break;   

                  }       

          }          

   }         

    cout<<"0"<<endl;

            u=0;       

  }      

   else u++;  

   }   

  return 0;

}
View Code

 

posted on 2013-07-08 16:16  Forgiving  阅读(88)  评论(0编辑  收藏  举报