找出n个自然数(1,2,3,……,n)中取r个数的组合。

news2024/10/11 12:14:09

题目:找出n个自然数(1,2,3,……,n)中取r个数的组合。例如,当n=5,r=3时,所有的组合为:

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

2 3 4

2 3 5

2 4 5

3 4 5

首先,找到所有的组合(不从小到大排):

#include<iostream>
using namespace std;

int n,r;
int cnt=0;
int a[10];
bool vis[10];
void dfs(int x){
	if(x==r){
		for(int i=0;i<cnt;i++){
			cout<<a[i]<<" ";
		}
		cout<<endl;
		return ;
	}
	for(int i=1;i<=n;i++){
		if(!vis[i]){
			vis[i]=true;
			a[cnt++]=i;
			dfs(x+1);
			cnt--;
			vis[i]=false;
		}
		
	}
}
int main(){
	cin>>n>>r;
	dfs(0);
	return 0;
} 

增加一个参数,使之从小到大排序:

#include<iostream>
using namespace std;

int n,r;
int cnt=0;
int a[10];
bool vis[10];
void dfs(int x,int start){// 添加一个 start 参数  
	if(x==r){
		for(int i=0;i<cnt;i++){
			cout<<a[i]<<" ";
		}
		cout<<endl;
		return ;
	}
	for(int i=start;i<=n;i++){// 从 start 开始  
		if(!vis[i]){
			vis[i]=true;
			a[cnt++]=i;
			dfs(x+1,i+1);// 下一层开始时,从 i + 1 开始,保证增序 
			cnt--;
			vis[i]=false;
		}
		
	}
}
int main(){
	cin>>n>>r;
	dfs(0,1); // 每一次调用dfs选一个数,选r次,从0开始计数;从 1 开始选
	return 0;
} 

递归写法:

#include<iostream>
using namespace std;

int a[100];

void comb(int n,int r){
	for(int i=n;i>=r;i--){
		a[r]=i;
		if(r>1){
			comb(i-1,r-1);
		}else{
			for(int i=a[0];i>=1;i--){
				cout<<a[i]<<" ";
			}
			cout<<endl;
		}
	}
}
int main(){
	int n,r;
	cin>>n>>r;
	a[0]=r;
	comb(n,r);
	return 0;
}

思路:n=5,r=3时,先考虑从大到小排列。固定5,只需求n=4,r=2,共6种;固定4,只需求n=3,r=2;固定3,只需求n=2,r=2. 最后只需逆序输出即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Golang】Go多线程中数据不一致问题解决方案--sync锁机制

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

AI工程师:AI时代的新岗位

从数量上看&#xff0c;AI工程师的数量可能比机器学习工程师/LLM工程师的数量要多得多。一个人可以非常成功地胜任这个角色&#xff0c;而无需接受任何培训。 —— Andrej Karpathy 仅初创公司的收入就超过 10 亿美元&#xff0c;随着 Gen AI 的早期成功迹象&#xff0c;每家有…

The current Windows user is not valid for executing Rabbitmq scripts

问题描述 在New Configuration或者Join host 配置的时候&#xff0c;执行配置信息报错如下 原因分析 可能的原因有如下两点 Cookie没有正确分配给当前用户这台机器是克隆来的&#xff0c;而且改了机器名 问题解决 要解决这个问题&#xff0c;需要卸载Erlang和RabbitMQ并重新安…

大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

中国数据库产业图谱(2024)

全图下载地址: 中国数据库产业图谱&#xff08;2024&#xff09;

雾霾下雨天气户外人像街景拍摄Lr后期调色,手机滤镜PS+Lightroom预设下载!

调色详情 在雾霾下雨天气下拍摄的户外人像街景往往具有一种独特的氛围。通过 Lightroom 进行后期调色&#xff0c;可以进一步强化这种氛围&#xff0c;使照片更加富有情感和艺术感。 预设信息 调色风格&#xff1a;灰调风格预设适合类型&#xff1a;人像&#xff0c;雾霾&am…

Xcode报错:Undefined symbols,Linker command failed with exit code1

这种编译报错点击Xcode左侧的小红叉这两行点击没反应&#xff0c;不知道具体报错原因怎么弄&#xff1f; 解决办法&#xff1a; 第一步&#xff1a;点周Xcode左侧工具栏的编译log日志按钮 第二步&#xff1a;第一步点击完Xcode左侧出现了编译历史列表&#xff0c;可以看到有报…

如何使用selenium结合最新版chrome爬虫

如何使用selenium结合最新版chrome爬虫 1、下载chrome及其插件chromedriver-win64 点我下载 [百度网盘] 通过百度网盘分享的文件:chrome爬虫插件 链接:https://pan.baidu.com/s/1kqkblX_ordZsQNYR234bMg 提取码:8888 下载后,解压安装。 2、配置电脑系统环境 我的电脑-…

Cocos 2 使用 webview 嵌入页面,摄像头调用没权限问题

Cocos 2 使用 webview 嵌入页面&#xff0c;摄像头调用没权限问题 嗯&#xff0c;这么说呢&#xff0c;这篇博文看自己的实际需求哈&#xff0c;标题写的可能不是很准确。 我这边呢&#xff0c;是遇到这样一个功能&#xff0c;就是有一个服务&#xff0c;他是的页面呢&#xff…

CentOS7离线安装gcc和gcc-c++(亲测成功)

1.点击下载安装包(下载下来的是gz文件&#xff0c;在linux环境下解压) 提取码&#xff1a;1111 2.进入gcc_rpm目录&#xff0c;执行安装命令 cd gcc_rpm/rpm -ivh *.rpm --nodeps --force3.验证gcc是否安装成功 gcc -v安装gcc-c 1.进入 gcc-c 文件件目录下 cd ../gcc-c/…

高校党费收缴系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;党费收缴管理&#xff0c;论坛信息管理&#xff0c;新闻动态管理&#xff0c;公告管理&#xff0c;基础数据管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&…

【刷题】数组中的逆序对

题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/submissions/571…

嵌入式硬件设计:从原理到实践

嵌入式硬件设计&#xff1a;从原理到实践 嵌入式硬件设计在物联网、智能设备、工业自动化等领域中扮演着至关重要的角色。随着技术的发展&#xff0c;越来越多的设备依赖于嵌入式系统进行实时控制与数据处理。本文将详细介绍嵌入式硬件设计的各个方面&#xff0c;从设计原理到…

Transformer细节问题

一、Transformer 以下是Transformer的一些重要组成部分和特点&#xff1a; 自注意力机制&#xff08;Self-Attention&#xff09;&#xff1a;这是Transformer的核心概念之一&#xff0c;它使模型能够同时考虑输入序列中的所有位置&#xff0c;而不是像循环神经网络&#xff…

成都睿明智科技有限公司正规吗怎么样?

在数字经济的浪潮中&#xff0c;抖音电商以其独特的内容生态和庞大的用户基础&#xff0c;正逐步成为商家们竞相布局的新蓝海。而在这场电商变革的浪潮中&#xff0c;成都睿明智科技有限公司以其专业的服务和敏锐的市场洞察力&#xff0c;成为了众多商家信赖的合作伙伴&#xf…

QAbstractTableModel只有refresh才能调动data()更新表格数据

void refresh() { beginResetModel(); endResetModel(); } QVariant data(const QModelIndex &index, int role) const

2024长城杯WP

WEB SQLUP 打开题目给了一个登录页面结合名字猜测为SQL注入 查看源码发现有hint提示开发者使用的是模式匹配 所以我尝试使用%来模糊匹配&#xff0c;登陆成功 usernameadmin&password% 进入面板之后发现有一个文件上传功能 尝试上传php文件&#xff0c;结果被waf&#xff0…

c#中多态的实例应用说明

在C#中&#xff0c;多态性是通过继承和实现接口来实现的&#xff0c;允许编写可以使用基类型的代码&#xff0c;然后使用派生类型的特定行为。 一.实例界面显示 二.源码界面显示 //定义的基类abstract class Shape{public abstract int Area();//基类中的抽象方法}//定义矩形的…

获得淘宝商品详情高级版 API 返回值实践流程

淘宝详情API接口的测试流程是一个系统而全面的过程&#xff0c;旨在确保API接口的稳定性和可靠性。以下是详细的测试流程&#xff0c;包括测试前的准备工作、测试步骤、测试后的总结&#xff0c;以及必要的测试工具和注意事项。 一、测试前的准备工作 了解API调用文档&#x…

LabVIEW 成绩统计系统

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…