zoukankan      html  css  js  c++  java
  • 输出 可重叠元素数组的从小到大排列

    问题 描述:

    将一组整数输入到数组p,输出p从小到大的全排列,p的元素可重叠

    代码描述:

     1 //从小到大可重排列
     2 #include<stdio.h>
     3 int A[20];
     4 int p[20];
     5 int n;
     6 
     7 void sort(int n,int *p)
     8 {
     9     for(int i=0;i<n-1;i++)
    10     {
    11         int min =i;
    12         for(int j=i+1;j<n-1;j++)
    13         {
    14             if(p[j]<p[min]) min=j;
    15         }
    16         if(min!=i)
    17         {
    18             int temp=p[i];
    19             p[i]=p[min];
    20             p[min]=temp;
    21         }
    22     }
    23 }
    24 void permutation(int n,int *a,int *p,int cur)
    25 {
    26     if(cur==n)     //如果游标到了最后,输出即可
    27     {
    28         for(int i=0;i<n;i++) printf("%-3d",a[i]);
    29         printf("
    ");
    30         return;
    31     }
    32     else
    33     {
    34         for(int i=0;i<n;i++)
    35         {
    36             if(i&&p[i]==p[i-1]) a[cur++]=p[i];    //p[i]!=p[i-1]是为了避免相同的元素多排而重复输出
    37             else                    
    38             {
    39                 int c1=0,c2=0;
    40                 for(int j=0;j<n;j++) if(p[i]==p[j]) c1++;
    41                 for(j=0;j<cur;j++) if(p[i]==a[j]) c2++;
    42                 if(c2<c1)
    43                 {
    44                     a[cur]=p[i];
    45                     permutation(n,a,p,cur+1);
    46                 }
    47             }
    48         }
    49     }
    50 }
    51 int main()
    52 {
    53     
    54     while(scanf("%d",&n)==1)
    55     {
    56         for(int i=0;i<n;i++) scanf("%d",&p[i]);
    57         sort(n,p);
    58         permutation(n,A,p,0);
    59     }
    60     return 0;
    61 }

    运行结果:

  • 相关阅读:
    Educational Codeforces Round 75 (Rated for Div. 2)
    Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
    Codeforces Round #594 (Div. 2)
    Codeforces Round #597 (Div. 2)
    Codeforces Round #599 (Div. 2)
    数学笔记
    模板
    模板
    win7如何更改语言教程
    cmd-net命令详解
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12730827.html
Copyright © 2011-2022 走看看