zoukankan      html  css  js  c++  java
  • 全排列

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    //全排列算法  求n的全排列以及排列个数
    void perm(int a[],int begin,int end);
    void swap(int a[],int n,int m);
    int sum=0;
    int main()
    {
        int n;
        int a[1000];
        cin>>n;
        for(int i=0;i<n;i++)
        {
            a[i]=i+1;
         } 
         perm(a,0,n-1);
         cout<<sum<<endl;
        return 0;
    }
    //n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);
    //出口:如果只有一个元素的全排列,则说明已经排完,则输出数组
    //不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等到出口,出口 出去后还需要还原数组: 
    void perm(int a[],int begin,int end)
    {
        if(begin==end)
        {
            for(int i=0;i<=end;i++)
            {
                cout<<a[i]<<" ";
            }
            cout<<endl;
            sum++;
            return ;
        }
        else
        {
            for(int i=begin;i<=end;i++)
            {
                swap(a,begin,i);//不断将每个元素放作第一个元素 
                perm(a,begin+1,end);//并将其余元素继续全排列 
                swap(a,i,begin);//再次交换,为下一次排列做准备 
            }
        }
    }
    void swap(int a[],int n,int m)
    {
        int temp;
        temp=a[n];
        a[n]=a[m];
        a[m]=temp;
    }

     运行截图:

  • 相关阅读:
    盘点Spring Boot最核心的27个注解
    一份非常完整的 MySQL 规范
    一份非常完整的 MySQL 规范
    Restful API 中的错误处理方案
    Restful API 中的错误处理方案
    一文总结 CPU 基本知识
    RPM软件管理工具
    yum仓库配置
    spring配置和下载
    spring的IOC 的底层实现原理
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14325349.html
Copyright © 2011-2022 走看看