【数学解法】

9人选5人是C95;

如果5人中全选女孩就不合条件,所以C65是要排除在外的;

总数Sum=9*8*7*6*5/5/4/3/2/1-6*5*4*3*2/5/4/3/2/1=126-6=120种。

【代码解法】

将三男六女作成数组,用组合器从中选取5个,符合有男有女则入选。

比如把数组定为"勇","力","刚","芳","雪","梦","曼","燕","娇",明显下标小于3者为男,大于等于3者为女。

Activity类代码:

import java.util.List;/*** 在3男6女中选5人参加活动,要求男女都有。则不同的选取方式有几种?并列出符合条件的名单*/
public class Activity {public static void main(String[] args) {final String[] names= {"勇","力","刚","芳","雪","梦","曼","燕","娇"};final int[] arr= {0,1,2,3,4,5,6,7,8};Combination c=new Combination(arr,5);List<List<Integer>> results=c.getResults();int idx=0;for(List<Integer> res:results) {boolean hasBoy=false;boolean hasGirl=false;String nameSery="";for(int index:res) {if(hasBoy==false && index<3) {hasBoy=true;}if(hasGirl==false && index>=3) {hasGirl=true;}nameSery+=names[arr[index]];}if(hasBoy && hasGirl) {System.out.println(String.format("%03d", ++idx) +"."+nameSery);}}}
}

Combination类代码:

package test230425;import java.util.ArrayList;
import java.util.List;
import java.util.Stack;/*** 数学中排列组合中的组合器实现* */
public class Combination {/*** 用于存放中间结果*/private Stack<Integer> stack;/*** 用于存放结果*/private List<List<Integer>> results;/*** 构造函数* @param arr 进行组合的元素* @param count 选多少个*/public Combination(int[] arr,int count) {if(count>arr.length) {throw new ArrayIndexOutOfBoundsException(count+">"+arr.length);}stack = new Stack<>();results=new ArrayList<>();doSelect(arr,count,0,0);}/*** 进行选择* @param arr 目标数组* @param expect 期望选择数量* @param actual 实际选择数量* @param current 当前下标*/private void doSelect(int[] arr, int expect, int actual, int current) {if(actual == expect) {List<Integer> list=new ArrayList<>();for(int i:stack) {list.add(i);}results.add(list);return;}for(int i=current;i<arr.length;i++) {if(!stack.contains(arr[i])) {stack.add(arr[i]);doSelect(arr, expect, actual+1, i);stack.pop();}}}/*** 取得组合结果* @return*/public List<List<Integer>> getResults(){return results;}/*** 测试* @param args*/public static void main(String[] args) {final int[] arr= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};final int count=2;Combination c=new Combination(arr,count);List<List<Integer>> results=c.getResults();int idx=0;for(List<Integer> res:results) {System.out.println(String.format("%02d", ++idx) +"."+res);}}
}

【输出】

001.勇力刚芳雪
002.勇力刚芳梦
003.勇力刚芳曼
004.勇力刚芳燕
005.勇力刚芳娇
006.勇力刚雪梦
007.勇力刚雪曼
008.勇力刚雪燕
009.勇力刚雪娇
010.勇力刚梦曼
011.勇力刚梦燕
012.勇力刚梦娇
013.勇力刚曼燕
014.勇力刚曼娇
015.勇力刚燕娇
016.勇力芳雪梦
017.勇力芳雪曼
018.勇力芳雪燕
019.勇力芳雪娇
020.勇力芳梦曼
021.勇力芳梦燕
022.勇力芳梦娇
023.勇力芳曼燕
024.勇力芳曼娇
025.勇力芳燕娇
026.勇力雪梦曼
027.勇力雪梦燕
028.勇力雪梦娇
029.勇力雪曼燕
030.勇力雪曼娇
031.勇力雪燕娇
032.勇力梦曼燕
033.勇力梦曼娇
034.勇力梦燕娇
035.勇力曼燕娇
036.勇刚芳雪梦
037.勇刚芳雪曼
038.勇刚芳雪燕
039.勇刚芳雪娇
040.勇刚芳梦曼
041.勇刚芳梦燕
042.勇刚芳梦娇
043.勇刚芳曼燕
044.勇刚芳曼娇
045.勇刚芳燕娇
046.勇刚雪梦曼
047.勇刚雪梦燕
048.勇刚雪梦娇
049.勇刚雪曼燕
050.勇刚雪曼娇
051.勇刚雪燕娇
052.勇刚梦曼燕
053.勇刚梦曼娇
054.勇刚梦燕娇
055.勇刚曼燕娇
056.勇芳雪梦曼
057.勇芳雪梦燕
058.勇芳雪梦娇
059.勇芳雪曼燕
060.勇芳雪曼娇
061.勇芳雪燕娇
062.勇芳梦曼燕
063.勇芳梦曼娇
064.勇芳梦燕娇
065.勇芳曼燕娇
066.勇雪梦曼燕
067.勇雪梦曼娇
068.勇雪梦燕娇
069.勇雪曼燕娇
070.勇梦曼燕娇
071.力刚芳雪梦
072.力刚芳雪曼
073.力刚芳雪燕
074.力刚芳雪娇
075.力刚芳梦曼
076.力刚芳梦燕
077.力刚芳梦娇
078.力刚芳曼燕
079.力刚芳曼娇
080.力刚芳燕娇
081.力刚雪梦曼
082.力刚雪梦燕
083.力刚雪梦娇
084.力刚雪曼燕
085.力刚雪曼娇
086.力刚雪燕娇
087.力刚梦曼燕
088.力刚梦曼娇
089.力刚梦燕娇
090.力刚曼燕娇
091.力芳雪梦曼
092.力芳雪梦燕
093.力芳雪梦娇
094.力芳雪曼燕
095.力芳雪曼娇
096.力芳雪燕娇
097.力芳梦曼燕
098.力芳梦曼娇
099.力芳梦燕娇
100.力芳曼燕娇
101.力雪梦曼燕
102.力雪梦曼娇
103.力雪梦燕娇
104.力雪曼燕娇
105.力梦曼燕娇
106.刚芳雪梦曼
107.刚芳雪梦燕
108.刚芳雪梦娇
109.刚芳雪曼燕
110.刚芳雪曼娇
111.刚芳雪燕娇
112.刚芳梦曼燕
113.刚芳梦曼娇
114.刚芳梦燕娇
115.刚芳曼燕娇
116.刚雪梦曼燕
117.刚雪梦曼娇
118.刚雪梦燕娇
119.刚雪曼燕娇
120.刚梦曼燕娇

END

【java/算法】在3男6女中选5人参加活动,要求男女都有。则不同的选取方式有几种?并列出符合条件的名单相关推荐

  1. 102道java算法

    1:奥运奖牌计数 import java.util.Scanner; //输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金.银.铜牌数目,以一个空格分开 //输出1 ...

  2. 匈牙利算法——海王们的渣男渣女行为

    二分图定义 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不 ...

  3. Java利用for循环解决搬砖问题36块砖,36人搬,男搬4,女搬3,两个小孩抬一砖,要求一次全搬完,问男、女和小孩各若干?

    搬砖问题 实际上与"百钱买百鸡"如出一辙,只是数字发生了变化而已. 详细解答"百钱买百鸡"问题请点击下方链接(详细到每一个小细节) "百钱买百鸡&qu ...

  4. java算法----排序----(6)希尔排序(最小增量排序)

    1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...

  5. iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 大家有这样的经历吗?前一秒刚在聊天软件上跟朋友分享了一款产品,下一秒就能在其他 App 中看到这款产品的广告推送,不了解内情的人说不定还 ...

  6. 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 3.输入10个学生的信息(包括学号.姓名.性别.年龄.成绩)组成结构体数组,分别统计男 ...

  7. 希尔排序的java算法_Java算法系列篇 【希尔排序】

    什么? 搞Java不会算法? 由于个人兴趣原因以及工作所需,最近了解Java算法的相关案例 及时分享 感兴趣的欢迎交流 希尔排序 描述: 基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直 ...

  8. java算法题常用到的一些api,含面试题+答案

    一面(电话面+后期在线coding) ①你们为什么要使用mongdoDb?你们的这个系统中涉及到哪些表? ②hytrix 的实现原理是什么?隔离策略有哪些?你们使用的是哪一些?你们项目中哪些地方使用到 ...

  9. 有36个人,36块砖,每人搬了一次,正好搬完。 其中男每人每次搬4块,女每人每次搬3块,小孩两人每次搬一块。问 男、女、小孩各多少人?...

    package arithmetic;import org.junit.Test;public class Test01 {/*** 题目描述:有36个人,36块砖,每人搬了一次,正好搬完.* 其中男 ...

最新文章

  1. linux 中mmap的用法
  2. kivy 的on_touch_move和on_touch_down
  3. java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
  4. 【广州】Web前端工程师
  5. MySQL之索引优化
  6. 【Druid】Druid简介
  7. python perl shell_Shell Perl Python 介绍
  8. 小码农也有大梦想!人机猜拳java项目代码
  9. 基于JDBC从数据库中读取数据,在百度地图批量标注地点
  10. 000 初步使用Kotlin开发Android应用
  11. Java开发快递物流项目(5)
  12. 在线极限词,敏感词,违禁词查询工具
  13. java pdf查看_Java检查PDF文件是否损坏
  14. Kanzi入门学习(二)
  15. 本地计算机无法设置共享文件夹,共享服务,详细教您win10共享文件夹无法访问怎么办...
  16. 安装MySQL提示cab文件损坏_安装所需的 CAB 文件“Redist.cab”已损坏处理办法
  17. CentOS 7.4 安装部署 hadoop 2.6 文档 V1.3
  18. 对接淘宝公共平台API
  19. 足球比赛数据可视分析
  20. android 为摄像头增加闪光灯(s5pv210)

热门文章

  1. 《征服 C 指针》摘录4:函数 与 指针
  2. CSS img正方形图片
  3. java 基础教程 ppt_java基础教程课件.ppt
  4. 如何看待毕业一年半,就能拿了年薪70W大厂OFFER的专科生!
  5. Common Lisp 超规范(译文):2. 语法
  6. 2021年秋招面经分享·商汤【22领航员-工程院-芯片设计工程师】
  7. Springboot整合Shiro+JWT
  8. uC/OS 的进程调度(上)
  9. Volley简单分析
  10. 汇佳学校:体育特长+学科优势 造就“双优”学霸