LDUOJ 组合的输出#dfs

组合的输出

思路:
与全排列的思路一致,如果填到r个数就输出,如果没填到,就把当前的数赋给下一个数,然后搜索下一个。与全排列不同的是,组合的输出不需要考虑这个数是否使用过,因为需要从这些数中选数

int n,r;
int a[25];
void dfs(int k)
{
	if(k > r)
	{
		for(int i=1;i<=r;i++)
			printf("%d ",a[i]);
		printf("\n");
		return ;
	}
	for(int i=a[k-1]+1;i<=n;i++)
	{
		a[k] = i;
		dfs(k+1);
	}
}
int main()
{
	cin >> n >> r;
	dfs(1);
	return 0;
}
发布了54 篇原创文章 · 获赞 0 · 访问量 1129

猜你喜欢

转载自blog.csdn.net/magic_wenge/article/details/105272728
今日推荐