萌新求问dfs
  • 板块灌水区
  • 楼主Aigony
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/11/21 20:11
  • 上次更新2023/11/5 07:34:43
查看原帖
萌新求问dfs
339128
Aigony楼主2020/11/21 20:11

题面:

std:

#include<bits/stdc++.h>
using namespace std;
int n,r,ans[22];
void dfs(int a,int b)
{
	if(b>r)
	{
		for(int i=1;i<=r;i++)
		{
			printf("%3d",ans[i]);
		}
		cout<<endl;
		return;
	}
	for(int i=a;i<=n;i++)//???
	{
		ans[b]=i;
		dfs(i+1,b+1);
	}
	return;
}
int main()
{
	cin>>n>>r;
	dfs(1,1);
	return 0;
}

请问打注释的那个地方为什么要循环到 n 啊QAQ

如果你其中一个数选了 i ,那以后必须要选比 i 大的数不是才能避免重复吗?可是如果在中间就选了最大的数后面还怎么选啊QAQ

可是如果改成循环到 n-b 又会过不了样例...

不用大号了,一个绿勾在这问基础 dfs 题怪丢人的。

2020/11/21 20:11
加载中...