NYOJ19擅长排列的小明

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=19

一个深搜就搞定了。。


代码:

#include <cstdio>
#include <cstring>

int n,m;
int a[15];
int v[15];
void dfs(int step)

{
     if(step == m + 1)
     {
         for(int i = 1;i <= m;++i)
            printf("%d",a[i]);
         printf("\n");
         return ;
     }
     for(int i = 1;i <= n;++i)
     {
         if(!v[i])
         {
             a[step] = i;
             v[i] = 1;
             dfs(step + 1 );
             v[i] = 0;
         }
     }
}
int main()

{
     int _;
     scanf("%d",&_);
     while(_--)
     {
         memset(v,0,sizeof v);
         scanf("%d%d",&n,&m);
         dfs(1);
     }
}

你可能感兴趣的:(ACM,DFS)