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) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模式. 结构
随机推荐
- 微信小程序---分包加载(subpackages)及报错
某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载. 分包很简单,具体步骤如下: 在app.json中,创建subPackages,root表示分包A的 ...
- Eclipse中创建一个新的SpringBoot项目
在Eclipse中创建一个新的spring Boot项目: 1. 首先在Eclipse中安装STS插件:在Eclipse主窗口中点击 Help -> Eclipse Marketplace... ...
- 关于C语言头文件写法的探讨
我不是软件工程出身,对于这方面一直处于探索阶段. 目前按照这样的习惯吧. 除主函数所在的文件以外,为每一个源文件配置一个头文件. 头文件里面不能写变量的申明和定义.头文件里面只写 #define,st ...
- 微信小程序记账本进度一
一,1.注册微信公众号 2.点击“立即注册”后,点击“”小程序“” 3.填写邮箱等信息.完成并激活.
- PAT 甲级 1002 A+B for Polynomials (25 分)
1002 A+B for Polynomials (25 分) This time, you are supposed to find A+B where A and B are two polyno ...
- jexus托管.net core
https://blog.csdn.net/gongzhe2011/article/details/72757863
- 【APP测试(Android)】--安全测试
- VS 2015 Android 环境设置
一般有3个地方需要设置(否则新建项目时会弹出值不能为空 null 参数名:path1.参见:http://www.cnblogs.com/fang8206/p/5020942.html) 1.Tool ...
- django学习第一天
class ModelAdmin(BaseModelAdmin): """Encapsulate all admin options and functionality ...
- C++标准库之右值引用与交付语义
C++标准委员会不应该制定一条阻止程序员拿起枪朝自己的脚丫子开火的规则. 右值引用(rvalue).交付语义(move) 最近阅读<C++标准库第二版>,看到第二章介绍C++11新特性3. ...