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



    #include <iostream> using namespace std; bool b[4]; int ans[4]; /*全排列*/ void dfs(int num) { if(num == 4) { for(int i = 1; i <= 3; i++) cout<<ans[i]; } cout << endl; int i; for(i = 1; i <= 3; i++) { if(b[i] == false) { b[i] = true; ans[num] = i; dfs(num+1); ans[num] = 0; b[i] = false; } } } int main() { dfs(1); return 0; }

     方法二:交换

    如对1,2,3,4全排列

    将1,2,3,4分别交换到头部打头,然后对后面剩余的元素又进行全排列

    1 ,,,,排完后将交换的元素交换回来,进行下一次全排列

    2,,,,

    3,,,,

    4,,,,

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    
    
    void perm(int a[],int n,int p,int q)
    {
        if(p == q)
            for(int i = 0; i < n; i++)
                printf("%d ",a[i]);
        putchar('
    ');
        for(int i = p; i < q; i++)
        {
            swap(a[i],a[p]);
            perm(a,n,p+1,q);//对p+1到q的元素进行全排列
            swap(a[i],a[p]);
        }
    }
    
    int main()
    {
        int a[4] = {1,2,3,4};
        int n  = 4;
        perm(a,n,0,4);
        return 0;
    }
    

     方法三:C++函数next_permutation()

    #include <algorithm>
    
    
    int perm2[maxn];
    
    void permutation(int n)
    {
        for(int i = 0; i < n; i++)
            perm2[i] = i+1;
        do
        {
            /*
            *编写需要对erm2进行的操作
            */
        }while(next_permutation(perm2,perm2+n));
        return;
    }
  • 相关阅读:
    caffe中的前向传播和反向传播
    net_->ForwardBackward()的大致梳理
    caffe Solve函数
    GA求解TSP
    BP网络中的反向传播
    Python模块路径查找
    Jupyter 美化
    不重装anaconda升级base中的Python版本
    查看谷歌浏览器保存在本地的密码
    爬取腾讯视频
  • 原文地址:https://www.cnblogs.com/unknownname/p/8823519.html
Copyright © 2011-2022 走看看