方法:按照题意便是不断的将最大的数翻到第一个,然后在翻到最后一个,求翻煎饼的次数,如果最大值已经在它该有的位置就不进行操作
#include <stdio.h>
int getmax(int a[],int pos)
{
int max=pos,i;
for (i=1;i<pos;i++)
if (a[i]>a[max]) max=i;
return max;
}
int main()
{
int a[101],b[101],c[2000],step,i,j,num=1,max,pos;
while (scanf("%d",&a[num])!=EOF)
{
while (getchar()!='\n')
{
++num;
scanf("%d",&a[num]);
}
for(i=1;i<num;i++)
printf("%d ",a[i]);
printf("%d\n",a[num]);
pos=num;
step=0;
while (pos>0)
{
max=getmax(a,pos);
if (max<pos)
{
if (max!=1)
{
++step;
c[step]=num+1-max;
}
for(i=1;i<=max;i++)
b[max-i+1]=a[i];
for(i=1;i<=max;i++)
a[i]=b[i];
for (i=1;i<=pos;i++)
b[pos-i+1]=a[i];
for (i=1;i<=pos;i++)
a[i]=b[i];
++step;
c[step]=num-pos+1;
}
--pos;
}
for (i=1;i<=step;i++)
printf("%d ",c[i]);
printf("0\n");
num=1;
}
return 0;
}