zoukankan      html  css  js  c++  java
  • permutation 1

    permutation 1

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int A[22];
     4 void init()
     5 {
     6     for(int i=1; i<=21; i++)A[i]=i;
     7 }
     8 int N;
     9 struct Nod
    10 {
    11     int A[11],B[12];
    12 };
    13 Nod T[50005];
    14 bool cmp(Nod A,Nod B)
    15 {
    16     int n=N-1;
    17     if(n>8)n=8;
    18     for(int i=0; i<n; i++)
    19     {
    20         if(A.B[i]!=B.B[i])
    21         return(A.B[i]<B.B[i]);
    22 
    23     }
    24 }
    25 void work()
    26 {
    27     long long K;
    28     int cnt=0;
    29     init();
    30     scanf("%d%lld",&N,&K);
    31     if(N<=8)
    32     {
    33         do
    34         {
    35             for(int i=0; i<N; i++)
    36             {
    37                 T[cnt].A[i]=A[i+1];
    38             }
    39             for(int i=0; i<N-1; i++)
    40             {
    41                 T[cnt].B[i]=T[cnt].A[i+1]-T[cnt].A[i];
    42             }
    43             cnt++;
    44 
    45         }
    46         while(next_permutation(A+1,A+N+1));
    47 
    48         sort(T,T+cnt,cmp);
    49         for(int i=0; i<N; i++)
    50         {
    51             cout<<T[K-1].A[i]<<(i==N-1?'
    ':' ');
    52         }
    53 
    54     }
    55     else
    56     {
    57         do
    58         {
    59             if(N>9)
    60             T[cnt].A[0]=N-9;
    61             else T[cnt].A[0]=N;
    62             for(int i=N-8; i<N; i++)
    63             {
    64                 T[cnt].A[i-N+9]=A[i];
    65             }
    66             for(int i=0; i<9; i++)
    67             {
    68                 //cout<<T[cnt].A[i]<<'
    ';
    69                 T[cnt].B[i]=T[cnt].A[i+1]-T[cnt].A[i];
    70             }
    71             cnt++;
    72 
    73 
    74         }
    75         while(next_permutation(A+N-8,A+N));//cout<<cnt<<'
    ';
    76         sort(T,T+cnt,cmp);
    77         if(N>9)
    78         cout<<N<<' ';
    79         for(int i=1;i<=N-10;i++){
    80             cout<<i<<' ';
    81         }
    82         for(int i=0; i<9; i++)
    83         {
    84             cout<<T[K-1].A[i]<<(i==8?'
    ':' ');
    85         }
    86     }
    87 }
    88 int main()
    89 {
    90     freopen("1.in","r",stdin);
    91     int _T;
    92     scanf("%d",&_T);
    93     while(_T--)
    94     {
    95         work();
    96     }
    97 
    98 }
  • 相关阅读:
    Linux命令之乐--nmap
    shell脚本学习总结09--分支与循环结构
    shell脚本学习总结08--比较与测试
    Linux命令之乐--test
    Linux命令之乐--read
    shell脚本学习总结06--数学计算
    Linux命令之乐--time
    Linux命令之乐--expr
    Linux命令之乐--seq
    Linux命令之乐--rename
  • 原文地址:https://www.cnblogs.com/liulex/p/11308161.html
Copyright © 2011-2022 走看看