首页 > 其他分享 >数的组合

数的组合

时间:2023-03-04 12:15:18浏览次数:20  
标签:输出 组合 int 样例 dfs 100

找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。

输入

输入n、r。

输出

按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。

最后再输出组合的数量。

样例输入

5 3

样例输出

543
542
541
532
531
521
432
431
421
321
total=10

代码:

#include <bits/stdc++.h>
using namespace std;
int n,r,a[100];
bool v[100];
int ans;
void dfs(int k)
{
	if(k==r+1)
	{
		for(int i=1;i<=r;i++)
		{
			cout << a[i];
		}
		ans++;
		cout << endl;
		return;
	}
	for(int i=n;i>=1;i--)
	{
		if(v[i]==0&&i<a[k-1])
		{
			a[k]=i;
			v[i]=1;
			dfs(k+1);
			v[i]=0;
		}
	}
}
int main()
{
	cin >> n >> r;
	a[0]=n+1;
	dfs(1);
	cout << "total=" << ans;
	return 0;
}

标签:输出,组合,int,样例,dfs,100
From: https://www.cnblogs.com/momotrace/p/17178022.html

相关文章

  • (二)回溯算法: 组合数
    组合数问题描述给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。感悟作为菜鸡的自己,这题一直是自己的心头之恨,上次和好友打比赛,遇到这题直接卡顿,想法......
  • 排列组合去重方法
    题目40.组合总和II思路一道经典的排列组合去重问题,搜索的思路很简单,关键在于如何去重。借用一下代码随想录的图去重的工作实际上就是判断同一层上的相同元素是否已......
  • 组合数学笔记(二)
    继续十二重计数法:我们考虑把\(n\)个金币分给\(m\)个人,要求满射,方案数为多少。显然金币是没有区别的,人是有区别的,也就是无区别的小球放入有区别的盒子当中,是典型的插板法,......
  • 排列组合学习笔记
    以下部分内容摘自OIWiki排列数从\(n\)个数中选出\(m\)个数按照一定的顺序排列,用\(A_{n}^{m}\)表示。排列的计算公式如下:\(A_{n}^{m}=n(n-1)(n-2)...(n-m+1)=\dfr......
  • 【DFS】LeetCode 17. 电话号码的字母组合
    题目链接17.电话号码的字母组合思路使用DFS进行枚举。代码classSolution{privateHashMap<Character,char[]>map=newHashMap<>();privateList<S......
  • 组合数学笔记-特殊计数数列
    目录特殊计数数列斐波那契数列斐波那契数列的定义与基本性质卡特兰数卡特兰数的定义与基本性质卡特兰数的应用满足通项关系的情况满足递推关系的情况斯特林数贝尔数分拆数......
  • 力扣216 组合综合3
    题目:找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字最多使用一次返回所有可能的有效组合的列表。该列表不能包含相同的组合两......
  • 力扣77 组合
    题目:给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[......
  • 组合数学笔记-排列与组合
    目录排列与组合排列排列的定义与基本性质错位排列错位排列的定义与基本性质圆排列圆排列的定义与基本性质多重集排列多重集排列的定义与基本性质组合组合的定义与基本性质......
  • 组合数学笔记-计数原理
    目录计数原理基本计数原理加法原理(分类)乘法原理(分步)减法原理(正难则反)除法原理(等价划分)重要计数原理抽屉原理(鸽巢原理)容斥原理约定:本笔记涉及的一切变量,若未特殊指明,则默......