首页 > 其他分享 >排列总方案数(全都要选)

排列总方案数(全都要选)

时间:2022-12-06 21:13:07浏览次数:37  
标签:输出 排列 方案 要选 全都 样例 dfs int

递归实现排列型枚举

把 1∼n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。

输入格式
一个整数 n。

输出格式
按照从小到大的顺序输出所有方案,每行 1 个。

首先,同一行相邻两个数用一个空格隔开。

其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

数据范围
1≤n≤9
输入样例:
3
输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

图解

image

Code

点击查看代码
#include<iostream> 
using namespace std;
int n;
bool st[20];		//是否选过
int ways[20];		//保存方案

void dfs(int x){	//选到第x位
    if(x > n){		//选到第n+1位,即得到一种方案
        for(int i = 1; i <= n; i ++ ){		//输出方案
            cout << ways[i] << " ";
        } 
        puts("");
    }

    for(int i = 1; i <= n; i ++ ){			//枚举每一位
        if(!st[i]){				//如果没选过
            st[i] = 1;
            ways[x] = i;		//选i
            dfs(x + 1);			//选下一位
			ways[x] = 0;		//恢复现场
            st[i] = 0;
        }
    }
}

int main(){
    cin >> n;
    dfs(1);			//从第一位开始选
}

标签:输出,排列,方案,要选,全都,样例,dfs,int
From: https://www.cnblogs.com/J-12045/p/16960546.html

相关文章

  • 老板:你为什么要选择 Vue?
    大家好,我是Kagol,VueDevUI 开源组件库和EditorX富文本编辑器创建者,专注于前端组件库建设和开源社区运营。假如你是团队的前端负责人,现在老板要拓展新业务,需要开发一个......
  • js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合
    现在有一批手机,其中颜色有['白色','黑色','金色','粉红色'];内存大小有['16G','32G','64G','128G'],版本有['移动','联通','电信'],要求写一个算法,实现[['白色','16G','移动'......
  • 老板:你为什么要选择 Vue?
    大家好,我是Kagol,VueDevUI开源组件库和EditorX富文本编辑器创建者,专注于前端组件库建设和开源社区运营。假如你是团队的前端负责人,现在老板要拓展新业务,需要开发一个......
  • 【C语言】【枚举】口袋中有红,黄,蓝,白,黑5种颜色的球若干个。每次从口袋中先后取出3个球
    #include <stdio.h>intmain(){ enumColor{red,yellow,blue,white,black};  //声明枚举类型//  enumColori,j,k,pri;   //定义枚举变量//  intn,loo......
  • Javascript随机排列数组-要求概率一样
    今天做了一道很有意思的题。如何在Js中实现一个随机排列数组的算法,要求排列之后每一次组合出现的概率相同。完整题目如下:etarr=[1,2,3];shuffle(arr);//arr=[3......
  • 工作中,工作做到游刃有余,一些重要元素的排列
    工作中,工作做到游刃有余,一些重要元素的排列。1、资历越深,经验丰富,对于场景的预判、适应力会更好。2、角色,就是是以owner的角色思考,还是以跟随者交付思考也很重要3、和合作......
  • 蓝桥杯 ADV-103算法提高 逆序排列
    关键字循环语句数组操作问题描述编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按......
  • 排列硬币
    排列硬币一、题目描述总共有n和硬币,并计划将它们按阶梯状排列。对于一个有k行组成的阶梯,其第i行必须正好有i枚硬币。阶梯的最后一行可能是不完整的。给定一个数组n,计算......
  • (转)什么是裸设备?Oracle为什么要选用裸设备?
    裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。1.什么叫做裸设备?裸......
  • STL应用之随机化全排列
    输入:一个序列,可以是一组数字,如1,2,3,4....,也可以是一组字符串"111","222",....输出:原序列的随机化序列要求:每种随机的序列出现的概率相等,如输入{1,2,3},那么有6种随机化序列......