整个全排列就是子排列递归到最后遍历的所有情况
千万别被用回溯的获得全排列的数据影响。博主之前卡了很久一直想着从回溯到得到的数据中找到递归的关系,结果写着写着就写崩了。
递归的数据有规律。...1这个部分处理好递归自然会处理好子节点的关系。
对于同一层级 比如1[],2[],3[],4[],例如1,2,3,4而言,每一层如下的步骤,可以保证同层数据可靠,并且底层按照如下思路也是正确的。...1,2,3,4—>swap(0,0)—>1 [2 3 4] (子递归不用管)—>swap(0,0)—>1,2,3,4
1,2,3,4—>swap(0,1)—>2 [1 3 4] (子递归不用管)—>swap...(0,1)—>1,2,3,4
1,2,3,4—>swap(0,2)—>3 [2 1 4] (子递归不用管)—>swap(0,1)—>1,2,3,4
1,2,3,4—>swap(0,3)—>4 [2 3...1] (子递归不用管)—>swap(0,1)—>1,2,3,4
所以整个全排列函数大致为:
swap(start,i)//i是从该层后面所有可能的全部要选一次排列到该层
recursive(start+