07 P1088 [NOIP2004 普及组] 火星人
题目:
代码:
循环: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);}