关于排列组合算法的心得
来源:互联网 发布:全球软件行业市场规模 编辑:程序博客网 时间:2024/06/06 00:49
排列
例如:有 9 个球,编号依次为1,2,3,4,5,6,7,8,9;从中随机取出 5 个,一共有多少种方法?(考虑顺序,如12345和54321是两种不同的方法)
思路:暴力破解
public class T { public static void main(String[] args) { int count=0; for (int i = 1; i <= 9; i++) { for (int j = 1; j <=9; j++) { for (int k = 1; k <= 9; k++) { for (int w = 1; w <= 9; w++) { for (int e = 1; e <= 9; e++) { if(i==j||j==k||k==w||w==e||i==e||i==k||i==w||j==w||j==e||k==e); else { count++; System.out.println(i+""+j+""+k+""+w+""+e); } } } } } } System.out.println(count); }
2.全排列
1,2,3,4的全排列算法:
public class CRSort { public static void main(String[] args) { int[] arr={4,3,2,1}; fn(arr,0); } private static void fn(int[] arr, int i) { if(arr.length==i){ for (int j = 0; j < arr.length; j++) { System.out.print(arr[j]); } System.out.println(); return; } for (int j = i; j < arr.length; j++) { int temp=arr[i];arr[i]=arr[j];arr[j]=temp; fn(arr, i+1); temp=arr[i];arr[i]=arr[j];arr[j]=temp; } }}
3.组合
例如:有 9 个球,从中随机取出 5 个,一共有多少种方法?
思路:递归
fn(9,5);private static int fn(int i, int j) { if(i<j) return 0; if(i==j) return 1; if(j==0) return 1; return fn(i-1, j-1)+fn(i-1, j); }
4.组合(2)
在ABCDE里面任意取出两个?打印所有可能
方法一:
public class B { public static void main(String[] args) { Scanner out=new Scanner(System.in); char[] arr="ABCDE".toCharArray(); fn(arr,arr.length,0,1); } private static void fn(char[] arr, int length,int s,int p) { if(p==length) return; for (int i = p; i < length; i++) { System.out.println(arr[s]+""+arr[i]); } fn(arr, length,s+1, p+1); }}
方法二:
public class Zhuhe { public static void main(String[] args) { char[] a="ABCDE".toCharArray(); boolean[] x=new boolean[a.length]; fn(a,3,x,0);//在ABCDE中取出三个 } private static void fn(char[] a, int sum, boolean[] x, int start) { if(start==a.length){ if(sum==0){ for (int i = 0; i < x.length; i++) { if(x[i]) System.out.print(a[i]+" "); } System.out.println(); } return; } x[start]=true; fn(a, sum-1, x, start+1); x[start]=false; fn(a, sum, x, start+1); }}
谢谢查看,如何错误,欢迎指正!
阅读全文
0 0
- 关于排列组合算法的心得
- 关于全排列组合算法
- 【数据结构与算法】关于排列组合
- 关于排列组合的探讨
- 排列组合的递归算法
- 排列组合的算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 高效率的排列组合算法
- 排列组合的算法
- 排列组合的高效算法
- 排列组合的算法
- 排列组合的算法
- 排列组合的数的算法
- cscope 使用时打开新的窗口
- No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '***' is theref
- 我来试试
- uboot启动第二阶段1
- java遍历Excel行
- 关于排列组合算法的心得
- 【python】复杂对象的创建过程与转化为json
- jsonp请求实例原生和jquery
- 最详细开发者账号申请流程,不看后悔
- Vue学习笔记一
- 趣味推理题 动动好久没有认真思考的脑袋
- cs231n笔记--到底什么是梯度消散
- 在windows上安装mongodb(二)
- 怎样读一本书V5.0 ?(译)