专题训练 1001 求全排列

Posted Want595

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题训练 1001 求全排列相关的知识,希望对你有一定的参考价值。

目录

专题训练(9) 1001 求全排列(1)

程序设计

程序分析


专题训练(9) 1001 求全排列(1)

【问题描述】

输入一个正整数n, 请按照字典序输出1-n的全排列。

【输入形式】

输入包含多组测试用例。
每组数据占一行,包含一

求全排列的两种方法

打印n个数的全排列

(1)使用stl里的next_permutation()

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int data[4]={5,2,1,4};
    sort(data,data+4);
    do{
        for(int i=0;i<4;++i)
            cout<<data[i]<<" ";
        cout<<endl;
    }while(next_permutation(data,data+4));
    return 0; 
} 

(2)递归求全排列

#include<iostream>
using namespace std;
#define Swap(a,b){int temp=a;a=b;b=temp;}
int data[]={1,2,3,4};
int num=0;
int Perm(int begin,int end){
    int i;
    if(begin==end){   //递归结束产生一个全排列
        num++;
    }else
        for(int i=begin;i<=end;i++){
            Swap(data[begin],data[i]);//把当前第一个数和后面的所有数交换位置
            Perm(begin+1,end);        //去掉第一个数,第二个数与后面的所有数交换位置 以此类推
            Swap(data[begin],data[i]);  //恢复,用于下一次交换
        }
}
int main(){
    Perm(1,4);
    cout<<num<<endl;//打印排列总数
}

 

以上是关于专题训练 1001 求全排列的主要内容,如果未能解决你的问题,请参考以下文章

《寒假算法集训》(专题十四)深度优先搜索

DFS专题 | 深度优先搜索

算法专题 之 深度优先搜索

求全排列

广度优先层次遍历还能这么用!

算法---数的全排列(深度优先搜索)