求解C/C++一个字符串的递归全排列的问题
答案:2 悬赏:0 手机版
解决时间 2021-03-20 17:50
- 提问者网友:爱了却不能说
- 2021-03-19 18:29
求解C/C++一个字符串的递归全排列的问题
最佳答案
- 五星知识达人网友:蓝房子
- 2021-03-19 19:50
举个简单的例子:123进行全排列,那么包含以下几部分
1)1是第一位的时候,对剩下的2,3进行全排列;
2)2是第一位的时候(将2和1交换),对剩下的1,3进行全排列;
3)3是第一位的时候(将3和1交换),对剩下的1,2进行全排列;
可以看到,每次递归是后面的值和起始位置交换,但每次都要保证原始顺序不变(不然不能保证和1进行交换)
所以第一次交换是每次将后面的值一次交换到起始位置,再对后面的进行全排列;
第二次的交换是要将前面的交换再交换回来,保证最初的原始排列不发生变化。
1)1是第一位的时候,对剩下的2,3进行全排列;
2)2是第一位的时候(将2和1交换),对剩下的1,3进行全排列;
3)3是第一位的时候(将3和1交换),对剩下的1,2进行全排列;
可以看到,每次递归是后面的值和起始位置交换,但每次都要保证原始顺序不变(不然不能保证和1进行交换)
所以第一次交换是每次将后面的值一次交换到起始位置,再对后面的进行全排列;
第二次的交换是要将前面的交换再交换回来,保证最初的原始排列不发生变化。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯