Java实现排列A(m,n)
来源:互联网 发布:双色球数据分据库 编辑:程序博客网 时间:2024/06/05 23:07
遇到一个算法题目,是求在n个数字中取m个数字(有序),有多少种可能。我一看,这么简单,就是A(n,m)呀。但是自己动手写代码的时候却发现好难实现,这就是所谓眼高手低吧,网上查了一下,把自己的理解记下来吧,方便以后回顾:
package sky_100;import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Permutations { static int sum = 0; public static void main(String[] args) { Permutations per = new Permutations(); String[] str = {"1","2","3","4"}; int total = 2; List<String> list = Arrays.asList(str); per.recursive("", total, list); System.out.println("总数为:"+sum); } /** * * @param prefix 拼接结果前缀 * @param total 需要从N个数中取total个数 * @param list 含有N个数的集合 */ public void recursive(String prefix,int total, List<String> list) { //总的要循环多少次 for(int i=0;i<list.size();i++){ LinkedList<String> tempList = new LinkedList<String>(list);//复制一份list,不能对原list进行操作 String remove = tempList.remove(i);//从集合中移出某个元素,防止出现重复数字 String s = prefix+remove;//拼接结果 if(total == 1){//当从N个数中取1个数时 System.out.println(s);//直接输出结果 sum++; }else{ int temp = total-1;//每到这里就得减一层 recursive(s, temp, tempList);//这里所传的值都是新值 } } } /** * 理解递归:以total为2,str={"1","2","3","4"}为例, * 第一次递归有一个for循环,然后这个for循环又套一层for循环 * for(i=0;i<4;i++){ * //因为集合中被移除一个数 * for(i=0;i<3;i++){ * ... * } * } */}
阅读全文
0 0
- Java实现排列A(m,n)
- 算法—实现排列 A(n,m)
- 排列数算法A(n,m)(n>=m)
- 回溯法解决排列A(m,n)
- 排列数A(n, m)的计算
- 用递归实现n选m排列
- Java实现从m个各不相同的元素中取出n个,并进行全排列。
- Java实现从m个各不相同的元素中取出n个,并进行全排列
- n个a和m个b的排列
- JAVA实现n的全排列
- Java实现组合C(m,n)
- 递归算法 m和A和n个B,求有多少种排列
- 蓝桥杯常用算法知识点:【递归】m个A与n个B的全排列个数
- Ackerman函数A(m, n)的递归和循环实现
- 数学排列算法---P(N,M)
- C#实现M选N的全排列的问题的方法
- java 实现n个整数的全排列
- n选m个元素组合java实现
- 自定义适配器的实现
- hdu 6162
- Scala里面如何使用枚举
- UVA
- HDU1698Just a Hook
- Java实现排列A(m,n)
- MySQL中的表中增加删除字段
- Codeforces Round #383 (Div. 2) C. Arpa's loud Owf and Mehrdad's evil plan
- USB hub 多usb接口重映射:udev 规则
- mysql 存储日期问题
- Girls and Boys(二分图--匈牙利算法)
- NOIP 2016 费用流
- 3D transform (学习笔记)
- 拓扑,DP noip 模拟赛 [益智游戏] 题解