打印排列(二)

题号: 10125
时限:1000ms
限制内存:32768KB

题目:

打印排列(二)

描述

 
   

输入两个正整数 n,m(1<n<20,1<m<min(n,5)),在 1~n 中任取 m 个数,按字典序从小到大输出所有这样的排列。

输入格式

输入两个正整数n,m。

输出格式

输出所有排列。

输入样例

3 2

输出样例

1 2
1 3
2 1
2 3
3 1
3 2

#include<iostream>
#include<cstring>
using namespace std;
int n,m,hezi[10];
bool visit[10];
void dfs(int step)
{
//第step个已经处理完了。 
if(step==m+1)
{
for(int i=1;i<=step-2;i++)
cout<<hezi[i]<<" ";
cout<<hezi[step-1]<<endl;
return;
}
for(int i=1;i<=n;++i)
{
if(!visit[i])
{
visit[i]=1;
hezi[step]=i;
dfs(step+1);
visit[i]=0;
}

}
int main()
{
cin>>n>>m;
memset(visit,0,sizeof(visit));
dfs(1);
   return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41882322/article/details/80009258
今日推荐