ACM题目,排序.思路或者代码
【问题描述】
通常我们对一个长度为n(n≤24)的整数数列进行排序操作,其实就是讲他们按照从小到大的
顺序重整.一般情况下我们可以比较任意两个数之间的大小并交换他们的位置,但这里我们
限制只能数列的某一个前缀序列翻转,除此之外的任何操作都是不允许的.更精确地说,假
设数列a1,a2,……,an,一个合法的操作是把数列变为ak,ak-1,……,a2,a1,ak+1,ak+2,……,
an,其中1
人气:298 ℃ 时间:2020-09-22 14:40:56
解答
如果没有相等的情况的话,那么输入可以看成是一个排列
每一种情况有2个分支.
分支1:将最大的数匹配到对应位置,这步可能花费1步或2步
分支2:获得排列的转置,该排列等价于其置换.这一步花费步数0
按最短路来写,需要判重,因为非常多重复状态,当n为24大概就10多万的状态点
如果输入有相等的情况,暂时没有好办法,估计数据中没有相等的情况,如果确实存在相等的情况,由于这是一个考察置换群的题目,那么看看有重复的置换群状态如何求吧
推荐
猜你喜欢
- 英语翻译
- arrive,you,the,Center Street,across,to,at,park,can,go
- 规律探究题
- 一辆汽车从1甲地开往乙地 共有520千米 第一天行了全程的2/5 第二天行了余下的3/8 这时汽车距离乙地还有多?
- 地球陆地的表面积有多大?体积有多大?
- 血浆的主要成分有哪些?包括血红蛋白么?
- 氧化钠和干燥的二氧化碳反应么?注意是氧化钠,不是过氧化钠
- 唐浮图慧褒始舍于其址的址是什么意思