#include<stdio.h>
int a[102], b[102], c[2000], i, step, n, num = 1, max;
int getmax(int a[], int n){
int temp, max = n;
for(int i = 1; i < n; i++)
if(a[i] > a[max])
max = i;
return max;
}//查询最大数的位置
int main(){
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]);
n = num;
step = 0;
while(n > 0)
{
max = getmax(a, n);
if(max < n)
{
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循环是反转最大数位置(包括最大数)以前的数据
}
for(i = 1;i <= n; i++)
b[n - i + 1] = a[i];
for(i = 1;i <= n; i++)
a[i] = b[i];//后两个for循环是整组数据反转
++ step;
c[step] = num - n + 1;
}
-- n;
}
for(i = 1;i <= step; i++)
printf("%d ", c[i]);
printf("0\n");
num = 1;
}
return 0;
}
UVA120
最新推荐文章于 2017-08-19 17:45:00 发布