题面:
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 题怪丢人的。