博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯 逻辑推断类型题目
阅读量:6908 次
发布时间:2019-06-27

本文共 1555 字,大约阅读时间需要 5 分钟。

题目描述:

A,B,C,D,E,F,G,H,,I,J共10名学生有可能参加本次计算机竞赛,也可能不参加,因为某种原因,他们是否参赛受到下列条件的约束:

  1. 如果A参加,B也参加

2. 如果C不参加,D也不参加

  3. A和C中只能有一个人参加

4. B和D中有且仅有一个人参加

5. D,E,F,G,H,中至少有2人参加

6. C和G或者都参加,或者都不参加

     7. C,E,G,I中至多只能2人参加

8. 如果E参加,那么F和G也都参加 

9. 如果F参加,G,H就不能参加

10.如果I,J都不参加,H必须参加

请变成根据这些条件判断这10名同学中参赛者名单,如果有多种可能,则输出所有的可能。

每种情况占一行,参赛同学按字母升序排列,空格分隔。

比如:C D G J

就是一种可能情况

解题思路:

建立一个数组,用对应的每个元素的值(为1表示参加比赛,0表示不参加比赛)来表示最后是否参加比赛。

通过递归实现这10个学生的所有参赛情况(也就是通过递归遍历出一个10为的二进制的所有可能的值)。

然后通过judge函数对这每一种情况进行判断,对于符合条件的进行输出。

其中:

  1. 如果A参加,B也参加                           A->B   <==> !A || B

  2. 如果C不参加,D也不参加                     !C->!D   <==>C ||  !D

  3. A和C中只能有一个人参加                     A和C参加比赛的人数小于1        

 4. B和D中有且仅有一个人参加                  B和D参加比赛的人数等于1

 5. D,E,F,G,H,中至少有2人参加                  D,E,F,G,H中参加的人数大于等于2

 6. C和G或者都参加,或者都不参加      

 7. C,E,G,I中至多只能2人参加                  C,E,G,HI参加的人数小于等于2

 8. 如果E参加,那么F和G也都参加        E->F && G

 9. 如果F参加,G,H就不能参加 F->!G && !H

 10.如果I,J都不参加,H必须参加 !I && !J -> H

程序代码:

#include
using namespace std;void show(int *a){ for(int i=0;i<10;i++) { if(a[i]>0) { cout<
<<" "; } } cout<
<= 1; b[3] = a[1]+a[3] == 1; b[4] = a[3]+a[4]+a[5]+a[6]+a[7] >= 2; b[5] = (a[2]+a[6]==0) || (a[2]+a[6]==2); b[6] = a[2]+a[4]+a[6]+a[8] <=2; b[7] = a[4] == 0 || (a[5]+a[6]==2); b[8] = a[5] == 0 || (a[6]+a[7]==0); b[9] = (a[8]+a[9]>0) || a[7]==1; int tag=1; for(int i=0;i<10;i++) { tag = b[i]&&tag; } return tag;}void fun(int *a,int n){ if(n>=10) { if(judge(a)) { show(a); } return; } a[n] = 0; fun(a,n+1); a[n] = 1; fun(a,n+1);}int main(){ int a[10]; fun(a,0); return 0;}
输出结果:

C D G J

C D G H
C D G H J
B C G H
B C G H J



转载于:https://www.cnblogs.com/zhezh/p/3773486.html

你可能感兴趣的文章
软件测试实践之路:学习资料倾情奉献
查看>>
Jenkins CICD代码构建发布流程
查看>>
assert与if的区别
查看>>
1-1/2+1/3-1/4+...........+1/99-1/100的值
查看>>
cordova入门——cordova环境配置(一)
查看>>
说一下单引号、双引号和不加引号区别
查看>>
Python第二周 学习笔记(1)
查看>>
函数覆盖
查看>>
Spring4 整合 Redis
查看>>
什么是javascript
查看>>
heartbeat
查看>>
js.jquery获取dropdownlist的值
查看>>
VMware View 5.0从菜鸟到高手系列 2安装View Connection Server
查看>>
nginx代理 配置防盗链
查看>>
Ubuntu JDK安装配置详解
查看>>
我的友情链接
查看>>
RookeyFrame 信息 常用信息整理
查看>>
面试 笔试
查看>>
PTA循环,函数,数组作业
查看>>
新月集—家庭
查看>>