问题标题: 酷町堂:1012 组合的输出

0
0
已解决
张岳恒
张岳恒
资深光能
资深光能
#include<iostream>
using namespace std;
int dfs(int);
int print();
int n,r,a[1000001]={0};
bool b[1000001]={0};
int main(){
	cin>>n>>r;
	dfs(1);
	return 0;
}
int dfs(int k){
	for(int i=1;i<=n;i++){
		if(!b[i]){
			a[k]=i;
			b[i]=1;
			if(k==r){
				print();
			}
			else dfs(k+1);
			b[i]=0;
		}
}
}
int print(){
	for(int i=1;i<=r;i++){
		cout<<a[i]<<' ';
	}
	cout<<endl;
}

代码,无法按照字典序输出

张岳恒在2020-04-05 09:27:50追加了内容

@包涵宇 帮我看下

张岳恒在2020-04-06 16:58:46追加了内容

没人来答吗?答出正确答案我增加悬赏

张岳恒在2020-04-07 13:20:26追加了内容

dalao们快来!帖沉了!!!!!


0
已采纳
董子墨
董子墨
中级天翼
中级天翼

你的错误:

一、dfs和print函数的类型是void

二、因为输出是递增的,你应该从a[k-1]+1开始dfs里的循环,这样就不用b数组了

0
余彦文
余彦文
初级光能
初级光能

张岳恒,你学到哪了? 

问题①,print函数应该定义成void类型。

问题②,dfs函数没有返回值,print也没有。

问题③,dfs函数中用上了自己,可能会卡。

ps:你用了什么黑魔法让它输出的?

我只能用我学过的知识帮你,请见谅。

0
0
0
我要回答