网站页面
当前课程
成员
General
主题 1
主题 2
主题 4
主题 5
主题 6
主题 7
主题 8
主题 9
主题 10
主题 11
主题 12
主题 13
主题 14
主题 15
主题 16
主题 17
主题 18
主题 19
主题 20
排序
成绩 | 0 | 开启时间 | 2013年02月21日 星期四 23:02 |
折扣 | 0.8 | 折扣时间 | 2013年02月28日 星期四 23:02 |
允许迟交 | 是 | 关闭时间 | 2013年02月28日 星期四 23:02 |
输入文件 | sorta.in | 输出文件 | sorta.out |
【问题描述】
通常对一个长度为n(n≤24)的整数数列进行排序操作,实际上是对它们按照从小到大的顺序重整。一般情况下可以比较任意两个数之间的大小并交换它们的位置,但这里我们限制只能数列的某一个前缀序列翻转,除此之外的任何操作都是不允许的。更精确地说,假设数列a1,a2,…,an,一个合法的操作是把数列变为ak,ak-1,…,a2,a1,ak+1,ak+2,…,an,
其中1
你的任务是求出一个序列用上面的方法排序至少需要多少步。
【输入】
输入格式(输入文件名sorta.in)
输入文件有两行:
第1行是一个整数n,表示数列的长度。
第2行有n个整数,表示待排序的数列,每个整数的绝对值不大于32767。
【输出】
输出格式(输出文件名sorta.out)
输出文件有两行:
第1行是一个整数s,表示完成排序所需的最少步数。
第2行有s个整数,按顺序表示完成排序的过程,每一步输出表示操作的k值。
【输入输出样例】
输入(sorta.in)
4
3 2 1 4
输出(sorta.out)
1
3
样例提示:只需要一步就可以完成排序3 2 1 4,1 2 3 4。