//全排列问题
//一开始没有加入那一句,比如输入是123,结果为
//123 132 312 321 123 132,原因是交换的时候应该基于以前那个不变数组,因为321交换之后为123,所以重复了
#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
void print(vector<int> &v){
for(int i=0;i<v.size();i++)
printf("%d ",v[i]);
printf("\n");
}
vector<int> v;
//输出数组的全排列
void permutation(int arr[],int from,int to){
if(from>to){
print(v);
return;
}
for(int i=from;i<=to;i++){
int tmp=arr[from];arr[from]=arr[i];arr[i]=tmp;
v.push_back(arr[from]);
permutation(arr,from+1,to);
v.pop_back();
tmp=arr[from];arr[from]=arr[i];arr[i]=tmp;//这一步其实是回溯
}
}
int main(){
int a[5]={1,2,3,4};
permutation(a,0,3);
system("pause");
return 0;
}
全排列问题
最新推荐文章于 2023-10-22 19:53:07 发布