dfs递归的方法:
还是考虑两个主要问题
1.顺序
2.dfs参数的设置
题解:
1.顺序从小到大,按照题意
2.dfs参数的设置:从那个数开始,和已经存了几个数。
C++ 代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m,num[100];
bool str[100];
void dfs(int u,int l)
{
if(u==(m+1))
{
for(int i=1;i<=m;i++)
cout<<num[i]<<' ';
cout<<endl;
}
for(int i=l;i<=n;i++)
{
if(!str[i])
{
str[i]=true;
num[u]=i;
dfs(u+1,i);
str[i]=false;
}
}
}
int main()
{
memset(str,0,sizeof str);
cin>>n>>m;
dfs(1,1);
return 0;
}