题目描述
blablabla
样例
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int n;
int a[N];
bool vis[N];
//核心思想:
//只有一个坑。。。两个坑。。n个坑
//每次的坑从n个数字里面选择几个扔进去
//一共tar个坑,当前枚举到第pos个坑
void dfs(int pos,int start,int tar)
{
if(pos==tar+1)//结束搜索
{
for(int i=1;i<=tar;i++)
cout<<a[i]<<" ";
cout<<endl;
return;
}
//处理第pos个坑填什么数字
for(int i=start;i<=n;i++)
{
if(!vis[i])//第i个数没有被选到
{
vis[i]=true;
a[pos]=i;
dfs(pos+1,i+1,tar);
vis[i]=false;
}
}
}
int main()
{
cin>>n;
cout<<endl;
//枚举n种坑的情况
for(int i=1;i<=n;i++)
{
dfs(1,1,i);
}
return 0;
}