关于人员派遣问题的解答

软件2班徐嘉辰20232133204 软件23 2023-11-06 22:22:51

某任务需要在A,B,C,D,E五人中物色人员去完成,但派人受限于下列条件:
1.若A去,则B去
2.D,E两人中必有人去
3.B,C中必有一人去,但只能去一人
4.C,D两个要么都去,要么都不去
5.若E去,则A,B去
问有几种派遣方式?用C语言编程来回答这个问题
输入格式:无
输出格式:以A,B,C,D,E代表没人,输出满足问题要求的所有派遣组合,每行一个派遣。
例:1 : C D
2 : A B E

#include<stdio.h>
int main()
{
    int arr[5] = { 0 };
    int a,b,c,d,e,x=1;
    for (a= 0; a < 2; a++)
    {
        arr[4] = a;
        for (b = 0; b < 2; b++)
        {
            arr[3] = b;
            for (c = 0; c< 2; c++)
            {
                arr[2] = c;
                for (d= 0; d< 2; d++)
                {
                    arr[1] = d;
                    for (e = 0; e < 2; e++)
                    {
                        arr[0] = e;
                        //这边使用了多个嵌套for循环来罗列每一个人去不去的情况
                        int flag = 0;
 
                        //条件1
                        if ((arr[0] == 1 && arr[1] == 1)||(arr[0]==0))
                        {
                            flag++;
                        }
                        //条件2
                        if (arr[3] == 1 || arr[4] == 1)
                        {
                            flag++;
                        }
                        //条件3
                        if ((arr[1] == 1 && arr[2] == 0 )|| (arr[2] == 1 && arr[1] == 0 ))
                        {
                            flag++;
                        }
                        //条件4
                        if ((arr[2] == 1 && arr[3] == 1 )|| (arr[2] == 0 && arr[3] == 0))
                        {
                            flag++;
                        }
                        //条件5
                        if (arr[4] == 1 )
                        {
                            if(arr[0] == 1&& arr[1] == 1){
                                flag++;
                            }
                        }else flag++;
                        if (flag == 5)//满足以上全部条件
                        {
                            printf("%d :",x);
                            x=x+1;
                            for (int i = 0; i < 5; i++)
                            {
                                if (arr[i] == 1)
                                {
                                    if (i == 0)
                                        printf(" A");
                                }
                                if (arr[i] == 1)
                                {
                                    if (i == 1)
                                        printf(" B");
                                }
                                if (arr[i] == 1)
                                {
                                    if (i == 2)
                                        printf(" C");
                                }
                                if (arr[i] == 1)
                                {
                                    if (i == 3)
                                        printf(" D");
                                }
                                if (arr[i] == 1)
                                {
                                    if (i == 4)
                                        printf(" E");
                                }
                            }printf("\n");
                        }
                    }
                }
            }
        }
    }
}

本题中运用了逻辑运算的思想;

通过数组的帮助实现找出满足条件的方法,我不知道会不会高效,但是还挺好理解。

...全文
94 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
张老师 11-16
  • 打赏
  • 举报
回复

这题还可以多考虑一下如何优化代码哦

" " " " " " "XX集团(中国)有限公司 " " " "程序文件 " "产品召回控制程序 " " " " " " " "文件编号: CT-QP-027 " "版 本: 01 " "页 数: 2 " "生效日期: 2012-07-01 " " " " " "制订: XXX 审核: XXX 批准: " "修 "序号 "章节号 "内容说明 "修改人 "审查 "批准 "修改日期 " "改 " " " " " " " " "栏 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "XX集团(中国)有限公司 "文件编号 "CT-QP-027 " "产品召回控制程序 " " " " "版 本 "01 " " "页 码 "1/2 " "1.目 的 " "为了在发现产品存在缺陷或危险而对使用者有潜在安全威胁时,最大限度地减少 " "或降低对使用者造成的危害。 " "2.范 围 " "发生在公司产品已到达销售点,部分已被顾客使用时。 " "3.权责 " "业务主导,品质部、工程部、生产部等相关部门配合执行。 " "4.参照 " "无 " "5.程序内容 " "5.1召回的等级: " "根据危害程度的等级将召回分为三种类型: " "一级召回:召回产品存在的危险或缺陷在可预知情况下能够导使用者的严重健 " "康问题或死亡; " "二级召回:召回的产品存在的危险或缺陷可能导致使用者临时的健康问题; " "三级召回:召回的产品本身不可能引起使用者的不良健康反应,只是违反了本 " "国或进口国相关的政策法规 " "5.2召回需达到的要求: " "对于一级召回,公司必须确保每一个存在的危险或缺陷产品均被召回并做报废处理,对于二" "级召回,公司必须确保存在的危险或缺陷产品均被召回且都已修复或处理;对于三级召回," "公司应确保产品没有继续在市场销售和被使用。 " "5.3若属于一级或二级召回: " "a.应立即与该产品的经销/购买商联系,告之该产品存在的缺陷和危险,本公 " "司实施召回的决定和将采取的召回计划,及此次召回行动小组简介和负责人 " "名,获取对方的支持; " "b.要求分销商通过批号/订单号.生产日期和入库日期等立即查询该批产品的 " "剩余库存数量和己拿出未被使用或未使用完的该批产品数量; " "c.要求分销商立即回收已卖给顾客未被使用或未使用完的该批产品,如不能确 " "定顾客去向的应尽量利用报纸、 网络等媒体方式发布召回消息,并详细说 " "明要召回商品的品牌,名称,用途名称,销售地点,批号和生产日期等产品 " "信息,务必收回每一个该产品(确定已被使用有空包装或确定已被丢弃也可 " "以理解为被召回)和剩余库存一起封存等待召回; " "d.要派遣专员在实施召回行动期间开设专线解答使用者的疑问和指导补救措 " "XX集团(中国)有限公司 "文件编号 "CT-QP-027 " "产品召回控制程序 " " " " "版 本 "01 " " "页 码 "2/2 " "施,在必要时要取得当地政府的支持; " "e.产品召回后,要分析原因,制定可行的预防和纠正措施,获得批准后,要向 " "公司内部全体人员和顾客通报,所有召回的产品,要妥善作好报废或修复处 " "理,公司内部的相同或相近配方的产品要重点分析研究是否存在相同的缺陷或者危害:并做 " "出适当的处理措施。 " "5.4若属于三级召回: " "a.应立即与该产品购买销售点联系,告之该产品违反的有关规定,本公司实施 " "召回的决定和将采取的召回计划,及此次召回行动小组简介和负责人姓名, " "获取对方的支持。 " "b.要求零售商通过批号/订单号,生产日期和入库日期等立即查询该批产品的 " "剩余库存数量,已分发正在使用和未使用完的该批产品批量,并立即回收, " "和剩余库存一起封存等待集中回收。 " "e.产品召回后采取适当的修复措施,重新检验合格后才可以重新投放市场。 " "d.产品召回后,要分析原因,制定可行的预防和纠正措施,获得批准后,要向 " "公司内部全体人员和顾客通报。 " "5.5在没有出现召回需要时,每年应进行一次类此的召回实验,并填定类此的 " "《产品召回记录表》。 " "6.记录 " "6.1产品召回记录表 " " " ----------------------- 程序文件-----产品召回控制程序全文共3页,当前为第1页。 程序文件-----产品召回控制程序全文共3页,当前为第2页。 程序文件-----产品召回控制程序全文共3页,当前为第3页。

180

社区成员

发帖
与我相关
我的任务
社区描述
程序设计基础课程教学群
c语言c++ 高校 福建省·厦门市
社区管理员
  • xmzq001
  • jiangxiaoju
  • 星落化尘
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请加入学习社区的软件23级同学修改社区昵称为学号+姓名,以便登记作业提交情况。

试试用AI创作助手写篇文章吧