|
楼主 |
发表于 2022-11-21 15:30:46
|
显示全部楼层
#include<stdio.h>
int qucong(int a[],int n)
{
int i,j,k,m;
for(i=0;i<n;i+=1)
{
for(j=i+1,k=i+1,m=0;j<n;j+=1,k+=1)
{
if(a[i]==a[j])k+=1,m+=1;
a[j]=a[k];
}
n-=m;
}
return n;
}
int m,b[64],c=0;
int pailie(int a[],int n)
{
if(0==n)
{
for(int i=0;i<m;i+=1)printf("%d ",a[b[i]-1]);
c+=1;
printf("\n");
}
else for(int i=0;i<m;i+=1)
{
int j=0;
for(;j<m;j+=1)if(i==b[j]-1)break;
if(j==m)
{
b[m-n]=i+1;
pailie(a,n-1);
b[m-n]=-1;
}
}
return c;
}
int main()
{
int a[]={0,0,-1,1,1};
m=qucong(a,sizeof(a)/sizeof(int));
pailie(a,m);
return 0;
}
//这个是去重复后排列组合所输出的值,可能会有些帮助(昨天求助到的) |
|