设有{r1,r2,...,rn}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。
#include<stdio.h>
#include<string.h>
int arr[]={1,1,3,3};
int no(int t,int left,int right){
int flag=1;
for(int i=left;i<t;i++){
if(arr[i]==arr[t]){
flag=0;
break;
}
}
return flag;
}
void f(int left,int right){
if(left==right){
for(int i=0;i<=right;i++)
{
printf("%3d",arr[i]);
}
printf("\n");
}
for(int i=left;i<=right;i++){
if(no(i,left,right)){
int temp=arr[i];
arr[i]=arr[left];
arr[left]=temp;
f(left+1,right);
temp=arr[i];
arr[i]=arr[left];
arr[left]=temp;
}
}
}
int main(){
f(0,3);
return 0;
}