题目: 给定前N个自然数的一个乱序排列, 比如 3 1 2, 求能让其顺序排列的最小操作次数。其“操作”只有一种,即对任何一个子序列反序。 所以,312,需要操作两次 312-》321-》123。输出2.
输入4321 ,输出1.
目前只想到一个比较费时间, 特别费空间的算法:
原始输入序列压入队列,同时记录操作次数为0。
while (队列非空):
弹出队列头和当前操作次数。
两重循环遍历该当前序列的所有子序列:
反序该子序列
if(顺序了):
返回当前操作次数 + 1
结束
else:
把(得到的新序列,当年操作次数+1)压入队列
有没有经济一点的办法?
--
FROM 81.157.216.*