当前位置: 首页 > news >正文

DFS2 C++

一、指数型枚举

    1、题目:

从 1∼n1∼ 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

输入格式

输入一个整数 n。

输出格式

每行输出一种方案。

同一行内的数必须升序排列,相邻两个数用恰好 11 个空格隔开。

对于没有选任何数的方案,输出空行。

本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。

数据范围

1≤n≤15

    2、代码:

#include<iostream>
#include<cstring>
using namespace std;
const int N=20;
int n;
bool st[N]={false};
void dfs(int u){
    if(u>n){
        for(int i=1;i<n+1;i++){
            if(st[i]==true){
                printf("%d ",i);
            }
        }
        cout<<endl;
        return;
    }
    for(int i=0;i<2;i++){
        if(i==1){
            st[u]=true;
            dfs(u+1);
        }
        else{
            st[u]=false;
            dfs(u+1);
        }
    }
    return;
}
int main(){
    cin>>n;
    dfs(1);
    return 0;
}

二、排列型枚举

    1、题目:

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

输入格式

一个整数 n。

输出格式

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

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

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

数据范围

1≤n≤9

    2、代码:

#include<iostream>
#include<cstring>
using namespace std;
const int N=10;
bool st[N]={false};
int nums[N];
int n;
void dfs(int u){
    if(u>n){
        for(int i=1;i<n+1;i++){
            printf("%d ",nums[i]);
        }
        cout<<endl;
        return;
    }
    for(int i=1;i<n+1;i++){
        if(st[i]==false){
            st[i]=true;
            nums[u]=i;
            dfs(u+1);
            st[i]=false;
        }
        
    }
    
}
int main(){
    cin>>n;
    dfs(1);
    return 0;
}

三、组合型枚举

    1、题目:

从 1∼n1∼这 n 个整数中随机选出 m 个,输出所有可能的选择方案。

输入格式

两个整数 n,m,在同一行用空格隔开。

输出格式

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

首先,同一行内的数升序排列,相邻两个数用一个空格隔开。

其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。

数据范围

n>0 ,
0≤m≤n ,
n+(n−m)≤25

    2、代码:

#include<iostream>
using namespace std;
const int N=30;
int a[N];
bool st[N];
int n,m;
void dfs(int u)
{
    if(u>=m)
    {
        for(int i=0;i<m;i++){

              cout<<a[i]<<"  ";

         }
        cout<<endl;
        return ;
    }
    for(int i=1;i<=n;i++)
    {
        if(st[i]==false&&(!u||i>a[u-1]))
        {
            st[i]=true;
            a[u]=i;
            dfs(u+1);
            st[i]=false;
        }
    }
}
int main()
{
    cin>>n>>m;
    dfs(0);
    return 0;
}

 

http://www.lryc.cn/news/330080.html

相关文章:

  • 2021-08-06
  • Centos服务器Open Gauss 部署
  • Vue与Electron融合之道:从Web App到桌面App的华丽转身
  • Higress 基于自定义插件访问 Redis
  • Mysql的库函数
  • 绿联 安装onlyoffice容器并启用Cloudreve的office在线预览与编辑功能
  • 金钱卦起卦
  • 学透Spring Boot 003 —— Spring 和 Spring Boot 常用注解(附面试题和思维导图)
  • 新能源汽车充电桩常见类型及充电桩站场的智能监管方案
  • 让工作自动化起来!无所不能的Python
  • Facebook轮播广告是什么?投放过程中有哪些需要注意的吗?
  • 3、jvm基础知识(三)
  • leetcode414-Third Maximum Number
  • 解决Quartus与modelsim联合仿真问题:# Error loading design解决,是tb文件中没加:`timescale 1ns/1ns
  • vue使用elementui组件的的对话框;使用ref
  • 第十四届蓝桥杯(八题C++ 题目+代码+注解)
  • HTTP协议格式详解之报头(HTTP header)、请求正文(body)
  • [yolox]ubuntu上部署yolox的ncnn模型
  • YOLOv9改进策略 :IoU优化 | 提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好
  • 如何使用KST指标进行多头交易,Anzo Capital一个条件设置
  • 【QT进阶】第十三章QT动画类的使用QAbstractAnimation
  • 【机器学习】揭秘无监督学习:机器如何自我学习发现数据奥秘
  • 鸿蒙(HarmonyOS)ArkTs语言基础教程(大纲)
  • 掌握未来商机:如何利用会话式AI赢在起跑线
  • 软考高级架构师:数据传输控制方式:程序控制方式、程序中断方式、DMA方式、通道方式、IO处理机
  • 大模型之路2:继续趟一条小路
  • 打造安全医疗网络:三网整体规划与云数据中心构建策略
  • imu测试--UDP、PTP
  • 软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)
  • 2024多功能知识付费源码下载