码迷,mamicode.com
首页 > 编程语言 > 详细

c++ n的全排列递归实现

时间:2020-01-09 23:07:19      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:排列   memset   out   space   今天   sizeof   code   分解   using   

今天学到了一个递归小例子:求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); }

后面继续努力,祝我,也祝各位在算法的道路上坚持下来。

c++ n的全排列递归实现

标签:排列   memset   out   space   今天   sizeof   code   分解   using   

原文地址:https://www.cnblogs.com/Tisou1/p/12173565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!