zoukankan      html  css  js  c++  java
  • 老子的全排列呢

    链接:https://www.nowcoder.com/acm/contest/76/H
    来源:牛客网

    题目描述:
    老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么?

    输入描述:

    输出描述:

    1~8的全排列,按照全排列的顺序输出,每行结尾无空格。
    示例1

    输入

    No_Input

    输出

    Full arrangement of 1~8

    备注:

    1~3的全排列  :
    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1

    解法一:用封装函数next_permutation。点击查看next_permutation函数的原理与使用

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int ans[8]={1,2,3,4,5,6,7,8};
        sort(ans,ans+8);
        do
        {
        	for(int i=0;i<8;i++)
    		{
    			if(i!=0) printf(" ");
    			printf("%d",ans[i]);
    		}
        	printf("
    ");
        }while(next_permutation(ans,ans+8));
        return 0;
    }
    解法二:利用递归
    #include<stdio.h>
    #include <iostream>
    using namespace std;
    bool p[10];
    int a[10];
    int cnt=0;
    void dfs(int k){
        if (k>8){
            for (int i =1 ; i <= 7 ; i ++ )
                printf("%d ",a[i]);
            printf("%d
    ",a[8]);
            return ;
        }
        for (int i = 1 ; i <= 8 ; i ++ )
           if (!p[i]){
               p[i]=1;
               a[k]=i;
               dfs(k+1);
               p[i]=0;
           }
    }
    int main(){
        dfs(1);
        return 0;
    }

  • 相关阅读:
    dfs-入门模板
    dp-状压dp
    c++ sizeof详解
    各种排序算法
    简介
    第178场周赛总结
    单调队列
    2019.10.24刷题统计
    2019.10.23刷题统计
    2019.10.22刷题统计
  • 原文地址:https://www.cnblogs.com/Friends-A/p/9309061.html
Copyright © 2011-2022 走看看