• hdu 1027(全排列)


     1 #include<iostream>
     2 #include<algorithm>  //next_permutation的函数声明
     3 #include<stack>
     4 #include<queue>
     5 using namespace std;
     6 int main()
     7 {
     8     int i,j,k,n,m;
     9     int a[1111];
    10     while(~scanf("%d %d",&n,&m))
    11     {
    12         for(i = 0;i <n;i ++)
    13         {
    14             a[i] = i+1;
    15         }
    16         for(i = 2;i <=m;i ++)
    17         {
    18             next_permutation(a,a+n);
    19         }
    20         for(i = 0;i<n-1;i ++)
    21         {
    22             printf("%d ",a[i]);
    23         }
    24         printf("%d
    ",a[i]);
    25     }
    26     return 0;
    27 }
    View Code

    //hdu 1027
    //全排列,输出第M小的数

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<stack>
     4 #include<queue>
     5 #include<list>
     6 #include<vector>
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     int i,j,k,n,m,q;
    12     int a[1111];
    13     while(~scanf("%d %d",&n,&m))
    14     {
    15         a[0] = 0;
    16         for(i = 1;i <=n;i ++)
    17         {
    18             a[i] = i;
    19         }
    20         for(i = 2;i <= m;i ++)
    21         {
    22             j = n;
    23             while(a[j] < a[j -1]) // 找出可交换的位置
    24             {
    25                 j --;
    26             }
    27             if(j == 1)
    28             {
    29                 for(k = 1;k <=n;k ++)
    30                 {
    31                     a[k] = k;
    32                 }
    33             }
    34             else
    35             {
    36                 for(k = n;k >= j;k --) // 从后面找到第一个比a[j -1]的数,进行交换。
    37                 {
    38                     if(a[k] >a[j - 1])
    39                     {
    40                         int t =a[k];
    41                         a[k] = a[j -1];
    42                         a[j - 1] = t;
    43                         break;
    44                     }
    45                 }
    46                 sort(a+j,a+1+n);//将后几位排序
    47             }
    48         }
    49         for(i = 1;i < n;i ++)
    50         {
    51             printf("%d ",a[i]);
    52         }
    53         printf("%d
    ",a[n]);
    54     }
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    51Nod
    51Nod
    51Nod
    51Nod
    51Nod
    51Nod
    51Nod
    51Nod --1133 不重叠的线段
    bzoj2440: [中山市选2011]完全平方数
    第三章:基本HTML结构
  • 原文地址:https://www.cnblogs.com/ypacm/p/6067033.html
Copyright © 2020-2023  润新知