#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int n,r,ans;//n个数里面挑选树r个数进行全排列,ans为排列数个
int visited[510];//记录是否被访问过
int a[510];//记录每次排列的数据
void dfs(int cur)
{
if(cur==r)
{
//已经有r个数
for(int i=0;i<cur;i++) cout<<a[i]<<" ";
cout<<endl;
ans++;
return;
}
for(int i=1;i<=n;i++)
{
//如果没有访问
if(!visited[i])
{
visited[i]=1;//现在访问了
a[cur]=i;
dfs(cur+1);
visited[i]=0;//回溯清除标记
}
}
}
int main()
{
cin>>n>>r;
dfs(0);
cout<<ans<<endl;
return 0;
}
深度优先搜索算法实现全排列
最新推荐文章于 2024-08-24 16:18:12 发布