文章目录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
如果遍历的组合同时满足上面所有的条件,则视为题目结果。
代码实现#includeint 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; }
运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)