Algorithm1: 全排列
2024-08-31 01:48:21
全排列
思想:
这是一个全排列问题,需要使用递归实现,将数组中的所有元素和第一个元素交换,求后面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;
}
最新文章
- OpenCV2:等间隔采样和局部均值的图像缩小
- Linux挂载卸载光盘&;实践
- 读Java面向对象编程(孙卫琴)
- StackExchange.Redis.Extensions.Core 源码解读之 Configuration用法
- 找回使用过的QQ头像
- 配置PhpStorm调试PHP
- extjs_02_grid(显示本地数据,显示跨域数据)
- SVN更新失败,提示locked
- php页面显示空白
- SQL__用命令删除定期的备份数据库文件
- 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章
- REACT相关资料合集
- bzoj 3343 教主的魔法 分块
- Lintcode174-Remove Nth Node From End of List-Easy
- POJ-3687 Labeling Balls(拓扑)
- python - class类 (一)
- IOP开发数据库--20180105整理
- OpenNI2 + NiTE2开发教程
- spring-boot parent变更为依赖方式
- linux netcat命令使用技巧