全排列

思想:
     这是一个全排列问题,需要使用递归实现,将数组中的所有元素和第一个元素交换,求后面n-1个元素的全排列。
     按照这个条件递归下去,知道元素的个数只有一个的时候,输出所有的元素。
 
#include <iostream>
using namespace std;
 
int total = 0;
void perm(int arr[], int start , int size){
                 if (start >= size){
                                 for (int i = 0; i < size; i++){
                                                cout << arr[i] << " " ;
                                }
                                cout << endl;
                                total++;
                                 //return;
                }
                 else{
                                 for (int i = start; i < size; i++){
                                                 int temp = arr [start];
                                                 arr[start ] = arr[i];
                                                 arr[i] = temp;
 
                                                perm( arr, start + 1, size);
 
                                                temp = arr[start ];
                                                 arr[start ] = arr[i];
                                                 arr[i] = temp;
                                }
                }
}
 
int main(){
                 int a [] = { 1, 2, 3, 4, 5, 6 };
                perm(a, 0, 3);
                cout<< total << endl;
                 return 0;
}
 
此外在C++STL中也有一个关于全排列的函数:
     next_permuntation(start, start_length);
     int a [] = { 1, 2, 3, 4, 5, 6 };
                sort(a, a + 6);
                 while (next_permutation(a, a + 6)){
                                 for (int i = 0; i < 6; i++){
                                                cout << a[i] << " " ;
                                }
                                cout << endl;
                }

最新文章

  1. OpenCV2:等间隔采样和局部均值的图像缩小
  2. Linux挂载卸载光盘&amp;实践
  3. 读Java面向对象编程(孙卫琴)
  4. StackExchange.Redis.Extensions.Core 源码解读之 Configuration用法
  5. 找回使用过的QQ头像
  6. 配置PhpStorm调试PHP
  7. extjs_02_grid(显示本地数据,显示跨域数据)
  8. SVN更新失败,提示locked
  9. php页面显示空白
  10. SQL__用命令删除定期的备份数据库文件
  11. 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章
  12. REACT相关资料合集
  13. bzoj 3343 教主的魔法 分块
  14. Lintcode174-Remove Nth Node From End of List-Easy
  15. POJ-3687 Labeling Balls(拓扑)
  16. python - class类 (一)
  17. IOP开发数据库--20180105整理
  18. OpenNI2 + NiTE2开发教程
  19. spring-boot parent变更为依赖方式
  20. linux netcat命令使用技巧

热门文章

  1. hihocoder1478 水陆距离
  2. qml源码查看
  3. ROS学习
  4. hive + hadoop 环境搭建
  5. nfs挂载
  6. Web服务器对比介绍
  7. 20145314郑凯杰 《Java程序设计》实验二 实验报告
  8. 20145329吉东云 《Java程序设计》 第一周学习总结
  9. 如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
  10. Scrapyd 项目爬虫部署