题目:
代码:
循环:1~n
终止:step=n-》flag=m;
额外:不重复(book),有存储(sa)
特殊:阶段跳转->flag
初始赋值-》if语句实现
#include<iostream>
using namespace std;
int flag;
int m,n;
int sa[10005];
int book[10005];
void dfs(int step)
{
if(step==n+1)
{
flag++;
if(flag==m+1)
{
for(int i=1;i<=n;i++)
{
cout<<sa[i];
}
cout<<endl;
return ;
}
}
for(int i=1;i<=n;i++)
{
if(flag==0)
{
i=sa[step];
}
if(book[i]==0)
{
book[i]=1;
sa[step]=i;
dfs(step+1);
book[i]=0;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>sa[i];
}
dfs(1);
}