https://segmentfault.com/a/1190000002710424

思想:当前层各节点首元素不同,则各节点的剩余元素也不同;下一层节点交换范围为首元素以外的元素

全排列算法:

void swap(char *a, int i, int j){
char tmp = a[i];
a[i] = a[j];
a[j] = tmp;
} void permutation(char *a, int from, int to){
if (to <= )
return;
if (from == to){
std::cout << a << std::endl; //迭代退出条件,即输出叶子节点
}
else{
for (int i = from; i <= to; ++i){
swap(a, i, from); //交换当前层,即将首位元素与剩余元素分别交换
permutation(a, from + , to); //进入下一层
swap(a, i, from); //恢复当前层,因为进入下一层后会将a的值交换一次,所以这里再交换回来
}
}
}

最新文章

  1. Ubuntu 安装OpenERP
  2. [转]Snappy压缩库安装和使用之一
  3. Python XML解析(转载)
  4. html5学习小结,float练习。
  5. url.py中的配置问题
  6. paip.提升效率---request自动绑定domain object
  7. 看来是要改用Gecko的节奏,放弃Awesomium吧
  8. linux和windows双系统导致的时间日
  9. JSP简介
  10. Linux软件间的依赖关系(转)
  11. Axure快捷键大全 Axure RP Pro 6.5快捷键
  12. yaourt 之 Curl 错误
  13. 前端学习_04_font-awesome字体图标
  14. [Swift]LeetCode96. 不同的二叉搜索树 | Unique Binary Search Trees
  15. SpringMVC整合freeMarker实现页面静态化+SpringMVC配置多视图
  16. $gopath not set的解决办法
  17. asp.net Identity 设置自定义登录
  18. JavaScript各种继承方式(四):原型式继承(prototypal inheritance)
  19. PHP代码审计笔记--代码执行漏洞
  20. python处理数据(一)

热门文章

  1. 淡旺季机票的价格问题(switch语句与if-else语句嵌套)
  2. C学习笔记-一些知识
  3. SkylineGlobe for web开发是否支持IE11?
  4. Java内存模型与线程安全
  5. CRectTracker类的使用
  6. SpringBoot热部署的实现方式
  7. Java模拟登录带验证码的教务系统(原理详解)
  8. zookeeper-监控与优化-《每日五分钟搞定大数据》
  9. .NET Core 中正确使用 HttpClient 的姿势
  10. 字符串的查找KMP