全排列 电玩女神 2022-08-05 02:54 230阅读 0赞 问题描述:设有\{r1,r2,...,rn\}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。 参考代码: #include<stdio.h> #include<stdlib.h> int *arr,n,count; void swap(int i,int j) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } void print() { int m; count++; for(m=0;m<n;m++) printf("%d\t",arr[m]); putchar('\n'); } void perm(int start,int end){ if(start==end) print(); else{ for(int i=start;i<=end;i++) if(start==i||(start!=i&&arr[start]!=arr[i])){//剔除重复项 swap(start,i); perm(start+1,end); swap(start,i); } } } int main(){ int i,j; scanf("%d",&n); arr=(int*)malloc(sizeof(int)*n); for(i=0;i<n;i++) scanf("%d",&arr[i]); //小→大,可以轻易剔除重复排列 for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(arr[i]>arr[j]) swap(i,j); perm(0,n-1); printf("%d\n",count); } 测试结果: ![SouthEast][] [SouthEast]: /images/20220805/c798e70f8a6b4ad1a80322732c1f1dae.png
相关 排列2 全排列 <table> <tbody> <tr> <td> <h2>排列2</h2> <strong>Time Limit: 1000/1000 MS (Java/O 小咪咪/ 2024年02月18日 22:39/ 0 赞/ 74 阅读
相关 全排列 问题描述:设有\{r1,r2,...,rn\}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。 参考代码: inclu 电玩女神/ 2022年08月05日 02:54/ 0 赞/ 231 阅读
相关 全排列 全排列 给出一个字符串或整数数组,对这个字符串或整数数组进行全排列 例如:\{1, 2, 3\} 数组,对这个整数数组进行全排列。 递归实现 实现 以你之姓@/ 2022年07月17日 15:25/ 0 赞/ 257 阅读
相关 全排列 标题:带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数 今天药忘吃喽~/ 2022年06月18日 09:51/ 0 赞/ 213 阅读
相关 全排列 方法一:采用递归的方式例子1、将数组int arr\[4\]=\{1,2,3,4\}进行全排列 static int n = 0; void Perm( ﹏ヽ暗。殇╰゛Y/ 2022年06月17日 06:19/ 0 赞/ 248 阅读
相关 全排列 题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], 以你之姓@/ 2022年04月25日 06:54/ 0 赞/ 249 阅读
相关 全排列 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以\{1, 2, 3, 4, 5\}为 例说明如何编写全排列的递归算法。 1、首先看 男娘i/ 2022年03月19日 01:50/ 0 赞/ 293 阅读
相关 全排列 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输 约定不等于承诺〃/ 2022年02月15日 00:47/ 0 赞/ 314 阅读
相关 全排列 talk is cheap, show me the code. public static void permutation(char[]ss,int i){ 蔚落/ 2022年01月29日 04:55/ 0 赞/ 333 阅读
还没有评论,来说两句吧...