UVa11925 Generating Permutations
出處:https://onlinejudge.org/index.php?option=onlinejudge&Itemid=8&page=show_problem&problem=3076
解題策略:
1 2 3 4 => 4 2 3 1
1交換前兩位數值
2將第一個移到最後一個
12122
1234 =1=> 2134 =2=> 1342 =1=> 3142 =2=> 1423 =2=> 4231
有序變成無序很困難
本題需要逆向,無序變成有序
4 2 3 1=>1 2 3 4
1交換前兩位數值
2將最後一個移到最前面
如果已經完成排序就結束
如果第一個比第二個大則交換兩數值(1),若第一個數值是n則不交換兩數,將最後一個移到最前面(2)
如果第一個比第二個小則,將最後一個移到最前面(2),最後反向顯示就可以獲得
4231 =2=> 1423 =2=> 3142 =1=> 1342 =2=> 2134 =1=> 1234
22121
12122