Java的组合排列问题
从4个人中选2个人参加活动,一共有6种选法。 从n个人中选m个人参加活动,一共有多少种选法?C(m/n)=C((m-1)/(n-1))+C(m/(n-1))数学算法
public class Main {
public static void main(String[] args) {
System.out.println("请输入总人数:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println("请输入选择人数:");
int m=sc.nextInt();
System.out.println("一共有"+fun(n,m)+"种方法!");
}
private static int fun(int n, int m) {
if(m>n)return 0;
if(m==0)return 1;
return fun(n-1,m-1) + fun(n-1,m);
}
}
2.
计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域
。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。
下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。
A(n/m)=A(n/(m-1))+A((n-1)/m)
方法一:
public class Main {
public static void main(String[] args) {
int m=3;
int n=2;
System.out.println(pailie(m, n));
}
public static int pailie(int m,int n){
if (m==0||n==0)return 1;
return pailie(m-1,n)+pailie(m, n-1);
}
}
方法二:
public class Main {
public static void main(String[] args) {
char[] date="ABC".toCharArray();
f(date,0);
}
private static void f(char[] date, int k) {
if (k==date.length) {
for (int i = 0; i < date.length; i++) {
System.out.print(date[i]+" ");
}
System.out.println();
}
for (int i = k; i < date.length; i++) {
{char t=date[k];date[k]=date[i];date[i]=t;}//试探
f(date,k+1);
{char t=date[k];date[k]=date[i];date[i]=t;}//回溯
}
}
}
原文链接:http://www.cnblogs.com/cy666/
Java的组合排列问题的更多相关文章
- Java设计模式——组合模式
JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...
- Java中组合 设计技巧 实例
关于组合 和 集成 先放两篇文章:这两篇文章写的太好了. http://blog.csdn.net/u013905744/article/details/51752044 Java的组合(持有对 ...
- 【设计模式】Java设计模式 - 组合模式
Java设计模式 - 组合模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...
- JAVA实现组合、排列、重复排列(多层循环)
1.代码 package com.hdwang; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...
- Java蓝桥杯——排列组合
排列组合介绍 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序. 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序. 全排列(permutation) 以数字为例,全 ...
- java中的排列组合
使用之前需要声明一个Combine的对象,调用startCombile方法,可返回想要的组合数或者个数,参数介绍很重要 public class Combine { private Object[] ...
- java实现组合问题
刚才刚更新了排列问题,顺带把组合问题也发表一下 1.问题描述: 已知有m个球,从m个球中取n个球有多少种不同的取法. 2.输入示例: 请输入总球的个数和要取的球的个数 6 5 3.输出示例: 共有6种 ...
- PHP数组内容不重复组合排列算法
最近在做ecshop的商品库存模块,分别给一款商品的多个属性组合设置库存,如下图: 一款手机有不同颜色,屏幕尺寸,系统和电量,都要设置不同的库存,如果都要手动选择属性组合,则会耗费很多不必要的时间.假 ...
- JAVA 设计模式 组合模式
用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模式. 结构
随机推荐
- # 20175213 2018-2019-2 《Java程序设计》第2周学习总结
## 教材学习内容总结 在第二周的学习过程中,我学习了第二章和第三章的内容.第二章中,我学习了基本数据类型和类型转换运算以及与C语言有着相同和不同的数组.标识符由字母,下划线,美元符号和数字组成,并且 ...
- java.lang.RuntimeException: Canvas: trying to draw too large(203212800bytes) bitmap.
https://www.cnblogs.com/spring87/p/7645625.html 今天我师父发现了一个问题:在更换登录页图片后,更新版本,部分手机打开会闪退.借了一个三星手机后,查看问题 ...
- mysql查询语句中自定义变量(转)
转:http://blog.sina.com.cn/s/blog_1512521570102wrfl.htmlselect cost,@a:=@a+1 from testone,(select @a: ...
- django 表单使用
Django提供对表单处理的支持,可以简化并自动化大部分的表单处理工作. 1 定义表单类 表单系统的核心部分是Django 的Form类. Django 的数据库模型描述一个对象的逻辑结构.行为以及展 ...
- mybatis动态排序
如果我们要传入排序字段作为一个参数到mybatis中,用以实现按照指定字段来排序的功能,那么我们需要使用$,而不是像其他参数一样,使用#.如下所示. <if test="sortnam ...
- win10系统配置jdk环境不能用%JAVA_HOME% 代替目录
发现以前配好的java环境变量和tomcat环境变量全都清空了,在重新配置的时候总是出现问题,即在cmd命令窗口下,输入java,显示正常,输入java -version 也是显示正常,唯独输入jav ...
- 5. Redis持久化
5. Redis持久化5.1 RDB5.1.1 触发机制5.1.2 流程说明5.1.3 RDB文件的处理5.1.4 RDB的优缺点5.2 AOF5.2.1 使用AOF5.2.2 命令写入5.2.3 文 ...
- python基础之Day10
一.函数的返回值 1.什么是返回值返回值是一个函数的处理结果, 2.为什么要有返回值如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用函数的返回值用r ...
- php 高效日志记录扩展seaslog 的使用
群里交流,听说seaslog不错,此文旨在记录使用. $ wget https://github.com/Neeke/SeasLog/archive/master.zip $ unzip master ...
- ----关于css中常见单位----
1.px 像素,绝对单位长度,可设定固定的长度大小.(像素是相对于显示器屏幕分辨率而言) 所有浏览器都显示为一样大小. eg: html: <p>这是一段正常段落</p> &l ...