排列的生成
题目
输出P(n,m)的排列(n,m<=10)
输入
3 2
输出
1 2
1 3
2 1
2 3
3 1
3 2
题意解析
输出全部用1到N能组成的M位排列
每个数最多能调用一次
代码
#include<iostream>
#include<cstdio>
using namespace std;
int a[11],n,m;
bool ok[11];
void init()
{
cin>>n>>m;
}
void dfs(int dep)
{
if(dep>m)
{
for(int i=1;i<=m;i++)printf("%d ",a[i]);
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(ok[i]==0)
{
a[dep]=i;
ok[i]=1;
dfs(dep+1);
ok[i]=0;
a[dep]=0;
}
}
}
int main()
{
init();
dfs(1);
return 0;
}