C语言每日一练——第66天:委派任务问题

C语言每日一练——第66天:委派任务问题,第1张

C语言每日一练——第66天:委派任务问题

C语言每日一练
2021年12月11日

文章目录
  • 题目描述
  • 问题分析
  • 代码实现
  • 运行结果

题目描述

某项任务需要在A、B、C、D、E、F这6个人中挑选人来完成,但挑选人受限于以下的条件
(1) A和B两个人至少去一人;
(2) A和D不能同时去;
(3) A、E和F三人中要挑选两个人去;
(4) B和C同时去或者都不去;
(5) C和D两人中只能去一个;
(6) 如果D不去,那么E也不去。

试编程求出应该让哪几个人去完成这项任务。

问题分析

这种简单题适合用遍历法,遍历所有的委派组合,定义 a-e 6个整型变量,值为1表示被委派,0表示没有被委派。

将题目的条件翻译成条件语句:
(1) a + b >= 1
(2) a + d < 2
(3) a + e + f == 2
(4) (b + c == 2) || ( b + c ) == 0
(5) c + d == 1
(6) (d + e == 0) || d

如果遍历的组合同时满足上面所有的条件,则视为题目结果。

代码实现
#include 

int main()
{
    int a, b, c, d, e, f;
    for(a = 0; a <= 1; a++)
        for(b = 0; b <= 1; b++)
            for(c = 0; c <= 1; c++)
                for(d = 0; d <= 1; d++)
                    for(e = 0; e <= 1; e++)
                        for(f = 0; f <= 1; f++)
                            if((a + b >= 1) &&
                                    (a + d < 2) &&
                                    (a + e + f == 2) &&
                                    ((b + c == 2) || (b + c == 0))&
                                    (c + d == 1) &&
                                    ((d + e == 0) || d))
                            {
                                printf("需要委派 ");
                                if(a)
                                    printf("A ");
                                if(b)
                                    printf("B ");
                                if(c)
                                    printf("C ");
                                if(d)
                                    printf("D ");
                                if(e)
                                    printf("E ");
                                if(f)
                                    printf("F ");
                                printf("去完成任务n");
                            }
    return 0;
}

运行结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5657750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存