c++ n的全排列递归实现
今天学到了一个递归小例子:求n的全排列
#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); }
后面继续努力,祝我,也祝各位在算法的道路上坚持下来。
相关推荐
steeven 2020-11-10
Tips 2020-10-14
nongfusanquan0 2020-08-18
yedaoxiaodi 2020-07-26
清溪算法君老号 2020-06-27
pengkingli 2020-06-25
yishujixiaoxiao 2020-06-25
清溪算法 2020-06-21
RememberMePlease 2020-06-17
nurvnurv 2020-06-05
SystemArchitect 2020-06-02
码墨 2020-05-29
清溪算法 2020-05-27
choupiaoyi 2020-05-27
清溪算法 2020-05-25
bluewelkin 2020-05-19
dbhllnr 2020-05-15
steeven 2020-05-09
baike 2020-05-09