• hdu 1027


    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1027

    给出 n m ,求对于 n 的全排列里第 m 小的,可以直接用dfs,因为m 最大是 10000,最多变换后面的8位就可以了,也可以直接用库函数里的全排列函数,先求出第m 小的全排列需要变换的最少的个数,然后对于最后面的几个数进行排列,前面的不用动

    View Code
     1 typedef long long ll;
     2 int n,num;
     3 int mark[9];
     4 ll tsum;
     5 int main()
     6 {
     7     int n,m;
     8     int i,j;
     9     while(~scanf("%d%d",&n,&m))
    10     {
    11         int tem = 1;
    12         for(i = 2; i <= 8; i++)
    13         {
    14             tem *= i;
    15             if(tem >= m) break;
    16         }
    17         int k = 0;
    18         for(j = n - i + 1; j <= n; j++)
    19         mark[k ++] = j;
    20         int sum = 2;
    21         while(next_permutation(mark,mark + k) && sum < m)
    22         {
    23             sum ++;
    24         }
    25         printf("%d",1);
    26         for(j = 2; j <= n - i; j++)
    27         printf(" %d",j);
    28         for(i = 0; i < k; i++)
    29         printf(" %d",mark[i]);
    30         printf("\n");
    31     }
    32     return 0;
    33 }
    View Code
     1 void per(int n,int *a,int cur)
     2 {
     3     int i,j;
     4     if(sum == m) return ;
     5     if(cur == n)
     6     {
     7         sum ++;
     8         if(sum == m)
     9         {
    10             for(i = 0; i < n; i++)
    11             printf("%d ",a[i]);
    12             cout<<endl;
    13         }
    14         return ;
    15     }
    16     for(i = 1; i <= n; i++)
    17     {
    18         if(!vis[i])
    19         {
    20             vis[i] = 1;
    21             a[cur] = i;
    22             per(n,a,cur + 1);
    23             vis[i] = 0;
    24         }
    25     }
    26 }
    27 int main()
    28 {
    29     int i,j;
    30     int n;
    31     int a[1001];
    32     while(~scanf("%d%d",&n,&m))
    33     {
    34         sum = 0;
    35         per(n,a,0);
    36     }
    37 }
  • 相关阅读:
    【NOIP2003提高组】加分二叉树
    【luogu1220】关路灯
    【luogu2583】地铁间谍
    Hello, World!
    python中的画笔控制函数
    python中库引用与import
    python中RGB色彩
    turtle角度坐标体系
    turtle空间坐标系
    python中turtle库的使用
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2779612.html
Copyright © 2020-2023  润新知