一固定数列如何翻转,让其按一定顺序排列,且翻转次数最少。
固定数列为:10 5 6 2 1 8 9 3 4 7(数列项数为N)翻转规则:可以从前面几个数翻转,也可以从后面几个数翻转,但是不能从中间翻转。
比如就以上面的数列为例。可以从前面几个数翻转(到底翻转几个数,可以自己定,2个可以,3个也可以,最多翻转个数为N-1,这里N=10)关键是如何翻转,比如:
从前面2个数翻转,指的是:将数列里的10和5翻转,翻转后就是5 10.数组变成了5 10 6 2 1 8 9 3 4 7
从前面3个数翻转,指的是:将数列里的10 5 6 翻转,翻转后就是6 5 10.数组变成了6 5 10 2 1 8 9 3 4 7
从前面4个数翻转,指的是:将数列里的10 5 6 2 翻转,翻转后就是2 6 5 10.数组变成了2 6 5 10 1 8 9 3 4 7
从前面5个数翻转,指的是:将数列里的10 5 6 2 1 翻转,翻转后就是1 2 6 5 10.数组变成了1 2 6 5 10 8 9 3 4 7
.。。。。。
从后面2个数翻转,指的是:将数列里的4和7翻转,翻转后就是7 4.数组变成了10 5 6 2 1 8 9 3 7 4
从后面3个数翻转,指的是:将数列里的3 4 7翻转,翻转后就是7 4.3数组变成了10 5 6 2 1 8 9 7 4 3
从后面4个数翻转,指的是:将数列里的9 3 4 7翻转,翻转后就是7 4.3 9数组变成了10 5 6 2 1 8 7 4 3 9
从后面5个数翻转,指的是:将数列里的8 9 3 4 7翻转,翻转后就是7 4.3 9 8数组变成了10 5 6 2 1 7 4 3 9 8
.。。。。。
但是不能从数列中间选择数来翻转,比如我要翻转2 1 8 这是不行的。
还有就是可以混合翻转,也就是根据数列的具体情况,可以从前面的几个数翻转,也可以再从后面的几个数翻转,交叉翻转。这是要根据数列的具体情况而定。
翻转到最后,数列要按顺序排列(从小到大或从大到小)。最后要计算的是按顺序排列后,总共翻转了多少次。要求就是这个次数要尽量是最少次数。
题目延伸:由10个数组成的全排列,那又该怎么计算这个翻转次数呢?