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
就是一种可能的情况。

多种情况的前后顺序不重要

package com.liu.ex4;import java.util.ArrayList;
import java.util.Collections;public class Main {public static ArrayList<Integer> list = new ArrayList<Integer>();public boolean judge1() {boolean judge = true;if(list.contains(0)) {if(!list.contains(1))judge = false;}return judge;}public boolean judge2() {boolean judge = true;if(!list.contains(2)) {if(list.contains(3))judge = false;}return judge;}public boolean judge3() {boolean judge = true;if(list.contains(0)) {if(list.contains(2))judge = false;}return judge;}public boolean judge4() {boolean judge = false;if(list.contains(1) && !list.contains(3))judge = true;else if(!list.contains(1) && list.contains(3))judge = true;return judge;}public boolean judge5() {boolean judge = false;int count = 0;for(int i = 3;i <= 7;i++) {if(list.contains(i))count++;}if(count >= 2)judge = true;return judge;}public boolean judge6() {boolean judge = false;if(list.contains(2) && list.contains(6))judge = true;else if(!list.contains(2) && !list.contains(6))judge = true;return judge;}public boolean judge7() {boolean judge = false;int count = 0;if(list.contains(2))count++;if(list.contains(4))count++;if(list.contains(6))count++;if(list.contains(8))count++;if(count <= 2)judge = true;return judge;}public boolean judge8() {boolean judge = true;if(list.contains(4)) {if(list.contains(5) == false || list.contains(6) == false)judge = false;}return judge;}public boolean judge9() {boolean judge = true;if(list.contains(5)) {if(list.contains(6) || list.contains(7))judge = false;}return judge;}public boolean judge10() {boolean judge = true;if(!list.contains(8) && !list.contains(9)) {if(!list.contains(7))judge = false;}return judge;}public boolean check() {if(judge1() && judge2() && judge3() &&  judge4() && judge5()) {if(judge6() && judge7() && judge8() && judge9() && judge10())return true;}return false;}public void dfs(int step) {while(step < 10) {list.add(step);if(check()) {ArrayList<Integer> tempList = new ArrayList<Integer>();for(int i = 0;i < list.size();i++)tempList.add(list.get(i));Collections.sort(tempList);for(int i = 0;i < tempList.size();i++) {char temp = (char) ('A' + tempList.get(i));System.out.print(temp+" ");}System.out.println();}step++;dfs(step);list.remove(list.size() - 1);}}public static void main(String[] args) {Main test = new Main();test.dfs(0);}
}

java实现逻辑推断相关推荐

  1. java中无法推断类型参数_Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫...

    java中无法推断类型参数 最近,Oracle采用了一种新策略,即每六个月发布一次新的语言版本. 该策略假定只有每个第3版都将提供长期支持或LTS. 快速说明: 具有LTS的当前版本是Java 8: ...

  2. java中无法推断类型参数_Java中的推断异常

    java中无法推断类型参数 借用和窃取其他语言的概念和想法总是很高兴的. Scala的Option是我真正喜欢的一个主意,因此我用Java编写了一个实现. 它包装了一个可能为null或不为null的对 ...

  3. java业务逻辑层文档,java业务逻辑层类图

    Java 面向对象 16 种设计原则一 类的设计原则 1 ...假如已有的系统中存在以下既有的业务逻辑代码: void...下面的类图将它的 2 个不同职责分成 2 个不同的...... java大作 ...

  4. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...

    俗话说的好,一如JAVA深似海.听起来好像胡说八道,其实却是很实在. 学过java的人都知道,java分支多,知识点十分丰富,单单论基础知识,也够学一壶的了,很多人在学习基础的时候已经被基础知识烦倒, ...

  5. Java中的推断异常

    借用和窃取其他语言的概念和想法总是很高兴的. Scala的Option是我真正喜欢的一个主意,因此我用Java编写了一个实现. 它包装了一个可能为null或不为null的对象,并提供了一些可按某种功能 ...

  6. java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现

    特别是互联网项目,对于数据一般是不能删除的(涉及到后面的数据分析),这就涉及到逻辑删除.所谓逻辑删除指的是数据并不是真正的删除,只是改数据表对应数据的状态(数据表中通常有一列叫delFlag,以此标识 ...

  7. ambiguous reference to overloaded definition(scala与java重载逻辑不匹配)

    0.美图 1.问题 Error:(108, 47) ambiguous reference to overloaded definition, both method toJSONString in ...

  8. 深入理解Nginx:java业务逻辑层都用什么技术

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  9. java的逻辑常量_在Java语言中,逻辑常量只有true和(__)两个值;

    [填空题]定义类的保留字是(__)定义接口的保留字是(__); [单选题]结合了不同类型的防火墙特点的是( ). [填空题]Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__) ...

最新文章

  1. apache java windows_Apache for Windows 安装
  2. Day 2: AngularJS —— 对AngularJS的初步认识
  3. 矩池云上如何修改cudnn版本
  4. python 数据驱动接口自动化框架_用Python实现数据驱动的接口自动化测试
  5. 红帽linux中文语言包,英文 RedHat AS5 中文语言包安装
  6. 开关电源和LDO的区别
  7. java山地车 故障,十年骑龄车友总结山地车保养维修技巧
  8. java提取jks文件提取私钥_如何从JKS文件中取出PEM格式证书
  9. cmake: 使用jom实现msvc工程并发编译提高速度(-j)
  10. BGP多线和双线双IP服务器有什么区别? 哪个网站访问速度更快?
  11. 药片计数器电路设计与实验
  12. 计算机网络 同步传输和异步传输
  13. 李宏毅 Transformer(Decoder部分)
  14. 微软雅黑与微软正黑体
  15. 一个创业者的自白:假如重回华为怎么做?
  16. 如何提高商城的转化率
  17. Api 接口文档是什么?如何直接使用 ApiDoc 生成接口文档
  18. python字符串汇率转换,转换美元为人民币,复制数字+美元输出结果,数字四舍五入到百位数
  19. Desktop Duplication API(桌面拷贝API)
  20. Kafka produce flush 引起的性能分析

热门文章

  1. 计算机检测不到双显示器,win10装双屏检测不到另一显示器怎么解决
  2. mysql数据库存储引擎
  3. wlop作品集_【图包】【wlop】作品合集
  4. 数据中心服务器多少度宕机,害怕宕机?来看看数据中心机房的4大等级!
  5. 2020年度国产数据库:openGauss
  6. Python 安装包环境小问题:WARNING: The repository located at pypi.douban.com is not a trusted or secure host a
  7. Tomcat部署及优化
  8. 北京中医药大学计算机应用基础作业1,北京中医药大学远程教育“计算机应用基础”第5次作业.doc...
  9. gb2312的6763个汉字
  10. 震碎认知,将原理融会贯通到顶点的SpringBoot实战项目