您的位置:首页 > 其它

有重复元素的排列问题

2013-09-10 13:10 225 查看
    问题描述:设有{r1,r2,...,rn}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。

    问题分析:

#include <stdio.h>
#include <string.h>

int a[4]={1,1,2,2};

int notExists(int index, int left, int right)
{
int flag=1;
for(int i=left;i<index;i++){
if(a[i]==a[index]){
flag=0;
break;
}
}
return flag;
}

void perm(int left, int right)
{
if (left==right){
for(int i=0;i<4;i++)
printf("%d",a[i]);
printf("\n");
}
else{
for(int i=left;i<=right;i++){
if(notExists(i,left,right)){
int temp=a[left];
a[left]=a[i];
a[i]=temp;

perm(left+1,right);

temp=a[left];
a[left]=a[i];
a[i]=temp;
}
}
}
}

void main()
{
perm(0,3);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: