ACwing92 递归实现指数型枚举 dfs

Posted aya-uchida

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACwing92 递归实现指数型枚举 dfs相关的知识,希望对你有一定的参考价值。

网址:https://www.acwing.com/problem/content/94/

题解:

每一层标记一个起点和下一层选择起点后的哪个数,选够数量或者超出$n$就返回,然后选数的数量枚举$1$至$n$即可。

AC代码:

#include <bits/stdc++.h>
using namespace std;
int sta[20], cnt;
int n;
void dfs(int beg, int div, int lim)

	if (div == lim)
	
		for (int i = 0; i < lim; ++i)
		
			printf("%d", sta[i]);
			if (i < lim - 1)
				printf(" ");
		
		printf("\n");
		return;
	
	for (int i = beg; i <= n; ++i)
	
		sta[cnt++] = i;
		dfs(i + 1, div + 1, lim);
		--cnt;
	
	return;

int main()

	scanf("%d", &n);
	for (int i = 0; i <= n; ++i)
		dfs(1, 0, i);
	return 0;

  

以上是关于ACwing92 递归实现指数型枚举 dfs的主要内容,如果未能解决你的问题,请参考以下文章

ACwing92 递归实现指数型枚举 dfs

《算法竞赛进阶指南》-AcWing-92. 递归实现指数型-题解

《算法竞赛进阶指南》-AcWing-92. 递归实现指数型-题解

92. 递归实现指数型枚举

《算法竞赛进阶指南》-AcWing-94. 递归实现排列型枚举-题解

《算法竞赛进阶指南》-AcWing-94. 递归实现排列型枚举-题解