Raptor-选组长

1. 问题描述

有3 个课外小组:物理组,化学组和生物组。今有张、王、李、赵、陈5 名同学,已知张、王为物理组成员,张、李、赵为化学组成员,李、赵、陈为生物组成员。如果要在3 个小组中分别选出3 位组长,一位同学最多只能担任一个小组的组长,共有种选择方案?

2. 思路分析

我们用字母 A 代表张同学,字母 B 代表王同学,字母 C 代表李同学,字母 D 代表赵同学,字母 E 代表陈同学。把这几位同学所对应的小组,展现在一张表中:

物理组AB
化学组ACD
生物组CDE

我们用字符串记录每个小组的成员,物理组 a="AB",化学组 b="ACD",生物组 c="CDE",我们用最笨的方法来翻译,“一位同学最多只能担任一个小组的组长” 这句话。

我们定义一个三重循环:

外层循环 i = 1 到 2

        中层循环 j = 1 到 3

                内层循环 k = 1 到 3

                        内部判断模块

对于内部判断模块来说,假定选 a[i] 为物理组组长,b[j] 为化学组组长, c[k] 为生物组组长,那么一个同学最多只能担任一个小组长,需要进行三个判断:

  1. a[i] 不能和 b[j] 相等,即物理组长和化学组长不能是一个人,用Raptor中的语句表述就是 a[i] != b[j];
  2.  a[i] 不能和 c[k] 相等,即物理组长和生物组长不能是一个人,用Raptor中的语句表述就是 a[i] != c[k];
  3. b[j] 不能和 c[k] 相等,即化学组长和生物组长不能是一个人,用Raptor中的语句表述就是 b[j] != c[k]。

这三个条件都要满足,才能达到题目中 “一位同学最多只能担任一个小组的组长” 的要求。大家可以自己试一试,如果那个条件不满足会怎么样。

现在核心判断部分达成了,就可以得到如下的伪代码了:

外层循环 i = 1 到 2

        中层循环 j = 1 到 3

                内层循环 k = 1 到 3

                        如果  a[i] != b[j], a[i] != c[k] 和 b[j] != c[k] 同时满足

                                组长选择方案 + 1

本题中同时满足的逻辑运算符为 and,通过把伪代码翻译成Raptor流程图,就彻底实现题目中的目标了。

3. 流程图

为了更好的展示每一种情况,我在流程图中对每一种满足题目要求的方案进行了输出,测试结果如下。 

4. 结果

 把我们前面定义的符号意义 “字母 A 代表张同学,字母 B 代表王同学,字母 C 代表李同学,字母 D 代表赵同学,字母 E 代表陈同学” 带进去就 OK 了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕是个小疯子

您的鼓励将促使我的创作更有价值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值