题目描述
今有 n 名学生,要从中选出 k 人排成一列拍照。
请按字典序输出所有可能的排列方式。
输入格式
仅一行,两个正整数 n,k。
输出格式
若干行,每行 k 个正整数,表示一种可能的队伍顺序。
输入输出样例
输入 #1复制
3 2
输出 #1复制
1 2 1 3 2 1 2 3 3 1 3 2
#include<bits/stdc++.h>
using namespace std;
int a[10],n,k;
bool b[10]={0},flag=0;
void dfs(int x,int n,int k)
{if(x==k)//到边界{for(int i=0;i<k;i++)//输出{cout<<a[i]<<" ";}cout<<endl;}for(int i=1;i<=n;i++)//从n个数中选{if(b[i]==1)continue;for(int j=0;j<x;j++)//找重复if(a[j]==i)flag=1;if(flag)continue;a[x]=i;b[i]=1;//标记dfs(x+1,n,k);a[x]=0;//回溯b[i]=0;//回溯*2}
}
int main()
{cin>>n>>k;dfs(0,n,k);//从0开始搜索return 0;
}