yuanran0 2020-01-09
#include<bits/stdc++.h>
using namespace std;
//求n的全排列 n!组数据
/*
每个全排列都有n个数,所以将求这n个数的全排列进行分解 :
1-求n-1的全排列
2-求n-2的全排列
3-求n-3的全排列
.
.
.
n-求1的全排列
*/
int n;
int data[100];
//void swap(int& x,int& y){//交换两个数的值
// int temp = x;
// x = y;
// y = temp;
//}
void swap(int *x,int *y){//形参为两个指针
int temp = *x;
x = y;
*y = temp;
}
void solve(int t){
int i;
if(t == n)
{
for(i=1;i<=n;i++)
cout<<data[i]<<" ";
cout<<endl;
return;
}//前t个数的已确定 接下来确定后面的数
for(i = t; i <= n; i++){
//每次交换两个数的值
swap(data[i],data[t]);
//进入递归------->每次进入solve()即开始确认第t+1位上的数
//当t == n 那么就进行输出这一组排列数据
solve(t + 1);
//还原数组为原来状态
swap(data[i],data[t]);
}
}
int main(){
//初始化 数组
memset(data,0,sizeof(data));
cout<<"input n:";
cin>>n;
//数组放入值
for(int i = 1; i <= n; i++)
data[i]=i;
solve(1);
}后面继续努力,祝我,也祝各位在算法的道路上坚持下来。