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