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

递归实现组合型枚举

递归实现组合型枚举

#include<iostream>
#include<vector>int n, m;
std::vector<int>res;
bool st[30];void Print()
{for(int i=0;i<res.size();i++){printf("%d ",res[i]);}puts("");
}void dfs(int num)
{if (res.size() == m){Print();return;}for (int i = num; i <= n; i++){if (!st[i]){st[i] = true;res.push_back(i);if (res.size() == 1 && res[0] > (n-m+1)){res.pop_back();st[i] = false;continue;}dfs(i + 1);st[i] = false;res.pop_back();}}
}int main(void)
{scanf("%d %d", &n, &m);dfs(1);return 0;
}

解法二

#include<iostream>
#include<vector>int n, m;
std::vector<int>res;
bool st[30];void dfs(int start)
{if(res.size()==m){for(int i=0;i<res.size();i++){printf("%d ",res[i]);}puts("");return;}for(int i=start;i<=n;i++){res.push_back(i);dfs(i+1);res.pop_back();}
}int main(void)
{scanf("%d %d", &n, &m);dfs(1);return 0;
}
http://www.lryc.cn/news/251412.html

相关文章:

  • SCAU:1065 数组中的指针
  • 找不到msvcp110.dll如何修复?分享5个亲测有效的修复方法
  • LeetCode刷题笔记第80题:删除有序数组中的重复项 II
  • 【开源存储】minio对象存储部署实践
  • Java编程强化练习(二)
  • Redis的高可用模式
  • 非功能关键知识总结(一)
  • 时间序列趋势检验相关检验方法:斜率法、Cox-Stuart检验、Mann-Kendall检验
  • Redis相关知识
  • 数据管理系统-week10-自由访问控制
  • Python遥感开发之批量拼接
  • 【bat】批处理脚本大全
  • java设计模式学习之【单例模式】
  • UWB高精度定位系统项目源码
  • WPF Live Charts2 自学笔记
  • 大小堆的实现(C语言)
  • Linux系统之centos7编译安装Python 3.8
  • Lambda表达式与方法引用
  • 二维数组处理(一)
  • 基于JNI实现调用C++ SDK
  • 计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)
  • 企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程
  • Session 与 JWT 的对决:谁是身份验证的王者? (下)
  • 论文笔记:Confidential Assets
  • Docker下搭建MySQL主从复制
  • VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集
  • 内部培训平台的系统 PlayEdu搭建私有化内部培训平台
  • Elasticsearch 相似度评分模型介绍
  • 视频生成的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0
  • SQL Server 2016(基本概念和命令)