#include<iostream>
using namespace std;
void perm(int list[],int k,int m);//声明
void perm(int list[],int k,int m)//调用
{
if(k==m)//相等则输出,总是输出最后一层。
{
for(int j=;j<=m;j++)
{
cout<<list[j];
}
cout<<endl;
}
else
{
for(int i=k;i<=m;i++)
{
swap(list[k],list[i]);//第一层,先和自己换。1和1换,2和2换,3就相等然后输出了。输出后回来,2和3换。
perm(list,k+,m);
swap(list[k],list[i]);//将前面换回的顺序再换回来,防止变顺序。
}
}
} int main()
{
//char a[7]="123456";
int a[]={,,};
perm(a,,);
system("pause");
return ;
}

逻辑顺序:

第一层循环3次:

k=0,i=k=0,list[0]和list[0]交换。然后递归调用k+1=1,2

进入第二层,循环2次:

k=1,i=k=1,list[1]和list[1]交换,然后递归调用k+1=2,2

此时相等,输出结果,0,1,2(相当于没有循环或者循环1次)

然后回到第二层,循环第二层的第2次

k=1,i=k+1=2,list[1]和list[2]交换,然后递归调用k+1=2,2

此时相等,输出0,2,1

然后回到第一层,循环第一层的第2次,后面同次过程。

最新文章

  1. 网站开发常用cmd命令
  2. python之初级学习
  3. PBR实现
  4. iOS二维码扫描IOS7系统实现
  5. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解
  6. 关于 app测试工具
  7. UBUNTU下SUBLIME TEXT3的安装+破解+汉化+中文输入
  8. 从零开始学ios开发(四):IOS控件(1),Image View、Text Field、Keyboard
  9. HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)
  10. JDK1.5中线程池,定时器知识
  11. jsp include 乱码问题的解决
  12. Win7 64位 php+Apache+mysql 配置
  13. jquery扩展方法
  14. OpenGL编译问题随手记
  15. es6学习笔记-async函数
  16. 深入分析volatile的实现原理
  17. 《Linux就该这么学》第十六天课程
  18. php变量详细讲解
  19. Netty 零拷贝(一)NIO 对零拷贝的支持
  20. JavaScript基础进阶之常用字符串方法总结

热门文章

  1. ASP.NET MVC5 :Attribute路由使用详解
  2. 教你十分钟构建好 SpringBoot + SSM 框架
  3. &lt;constant name=&quot;struts.devMode&quot; value=&quot;true&quot; /&gt;
  4. GROUP BY 和 ORDER BY 的一起使用
  5. yii2.0 表单小部件常用的默认选中
  6. wcf的Contract中name的使用
  7. Android4.0设置界面改动总结(二)
  8. pthread_create()创建线程时传入多个參数
  9. 婚礼上的谎言(C++实现)
  10. 三种数据库日期转字符串对照sql server、oracle、mysql(V4.11)