题目描述
blablabla
算法1
时间复杂度
C++ 代码
#include<iostream>
#include<vector>
using namespace std;
vector<int> res;
int m,n;
void dfs(int u)
{
if(res.size()+n-u<m) return;
if(u==n&&res.size()>m) return ;
if(u==n&&res.size()==m)
{
for(auto c:res)
cout<<c<<' ';
cout<<'\n';
return ;
}
res.push_back(u+1);
dfs(u+1);
res.pop_back();
dfs(u+1);
}
int main()
{
cin>>n>>m;
dfs(0);
return 0;
}
算法2
时间复杂度
C++ 代码
#include<iostream>
using namespace std;
const int N=25;
int p[N];
bool st[N];
int m,n;
void dfs(int u)
{
if(u==m)
{
for(int i=0;i<m;i++)
cout<<p[i]<<' ';
cout<<'\n';
return ;
}
for(int i=1;i<=n;i++)
{
if(!st[i]&&((u>0&&i>p[u-1])||u==0))
{
st[i]=true;
p[u]=i;
dfs(u+1);
st[i]=false;
}
}
}
int main()
{
cin>>n>>m;
dfs(0);
return 0;
}