题目名称 776. 排序
输入输出 sorta.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2012-04-18加入
开放分组 全部用户
提交状态
分类标签
搜索法
分享题解
通过:2, 提交:29, 通过率:6.9%
GravatarAsm.Def 100 0.265 s 0.29 MiB C++
GravatarPom 100 1.031 s 3.15 MiB C++
GravatarOo湼鞶oO 40 6.038 s 0.31 MiB C++
GravatarPom 40 6.818 s 3.15 MiB C++
GravatarCitron酱 30 0.429 s 0.31 MiB C++
GravatarOo湼鞶oO 30 6.069 s 0.26 MiB C++
GravatarOo湼鞶oO 30 6.069 s 0.26 MiB C++
GravatarOo湼鞶oO 30 6.071 s 0.26 MiB C++
GravatarOo湼鞶oO 30 6.091 s 0.26 MiB C++
GravatarPom 30 7.001 s 3.15 MiB C++
本题关联比赛
20120418s
关于 排序 的近10条评论(全部评论)
真-搜索都不会.......
GravatarAsm.Def
2015-05-29 11:42 1楼

776. 排序

★★☆   输入文件:sorta.in   输出文件:sorta.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

通常对一个长度为n(n≤24)的整数数列进行排序操作,实际上是对它们按照从小到大的顺序重整。一般情况下可以比较任意两个数之间的大小并交换它们的位置,但这里我们限制只能数列的某一个前缀序列翻转,除此之外的任何操作都是不允许的。更精确地说,假设数列a1,a2,…,an,一个合法的操作是把数列变为ak,ak-1,…,a2,a1,ak+1,ak+2,…,an,

其中1≤n。例如,数列3 2 1 4,可能的操作有3种,分别是2 3 1 4(即操作3,2),1 2 3 4(即操作3,2,1),4 1 2 3(即操作整个数组)。

你的任务是求出一个序列用上面的方法排序至少需要多少步。

【输入格式】

输入文件有两行:

第1行是一个整数n,表示数列的长度。

第2行有n个整数,表示待排序的数列,每个整数的绝对值不大于32767。

【输出格式】

输出文件有两行:

第1行是一个整数s,表示完成排序所需的最少步数。

第2行有s个整数,按顺序表示完成排序的过程,每一步输出表示操作的k值。

【输入样例】

4
3 2 1 4

【输入样例】

1
3

【样例解释】

样例提示:只需要一步就可以完成排序3 2 1 4,1 2 3 4。