当前位置:网站首页>7-3 组合问题(*)

7-3 组合问题(*)

2022-06-11 18:34:00 见闻色霸气~

题目信息

从 m (0<m≤26) 个大写字母中任意选出 n (0<n≤m) 个字母组合到一起,一共有多少种组合?

请编写程序,输入 m 和 n,输出从 A 开始的连续 m 个字母中任取 n 个字母的所有组合。

要求:每行输出一个组合(组合内的字母按升序排序),按字典序输出。

输入样例
4 3

输出样例
ABC
ABD
ACD
BCD

代码:

dfs直接写就行,题目要求是要升序。那就用两个参数。

#include<bits/stdc++.h>
using namespace std;
int m, n;
char q[30] = {
     'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
char p[50];
void dfs(int u,int s)
{
    
	if (u == n) {
    
		for (int i = 0; i < n; i++) {
    
			printf("%c", p[i]);
		}
		puts("");
		return;
	}
	for (int i = s; i < m; i++) {
    
		p[u] = q[i];
		dfs(u + 1, i + 1);
		} 
}
		int main()
		{
    
			cin >> m >> n;
			dfs(0,0);
			
		}
原网站

版权声明
本文为[见闻色霸气~]所创,转载请带上原文链接,感谢
https://blog.csdn.net/guankunkunwd/article/details/125174158