有重复元素的排列问题

来源:互联网 发布:自私的基因 知乎 编辑:程序博客网 时间:2024/06/05 23:07

设有{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;}


0 0
原创粉丝点击