输出 可重叠元素数组的从小到大排列

2021-02-12 11:16

阅读:686

标签:元素   整数   运行   输出   数组   printf   http   while   oid   

问题 描述:

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

代码描述:

 1 //从小到大可重排列
 2 #include 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;i1;i++)
10     {
11         int min =i;
12         for(int j=i+1;j1;j++)
13         {
14             if(p[j]

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"%-3d",a[i]); 29 printf("\n"); 30 return; 31 } 32 else 33 { 34 for(int i=0;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;jif(p[i]==p[j]) c1++; 41 for(j=0;jif(p[i]==a[j]) c2++; 42 if(c2c1) 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"%d",&p[i]); 57 sort(n,p); 58 permutation(n,A,p,0); 59 } 60 return 0; 61 }

运行结果:

技术图片

 

输出 可重叠元素数组的从小到大排列

标签:元素   整数   运行   输出   数组   printf   http   while   oid   

原文地址:https://www.cnblogs.com/bboykaku/p/12730827.html


评论


亲,登录后才可以留言!