简单的逻辑判断题
来源:互联网 发布:知乎英语发音书推荐 编辑:程序博客网 时间:2024/05/21 04:14
题目1
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
思路
满足条件的情况很多,首先穷举筛选出所有符合话的结果
发现有很多的排名是错误的,比如有第1名没有第2名,有第3名,这种情况显然不存在
所以设了一个变量flag来判断
判断方法,用flag二进制序列的后五位来表示该排名有没有人
例如:
5 4 3 2 1 表示名次对应flag最后五位二进制序列
1 1 1 1 1 表示所有排名均有人,此种情况存在
1 1 1 0 1 表示第2名不存在,其他名次均有人,此种情况不存在
0 0 0 1 1 第1第2均有人,后面三个名次没人,说明有并列的,此种情况存在
也就是说,二进制序列的1必须连续,如果不连续,排名就是错误的
通过这个原理对第一步得到的结果进行筛选,得到正确结果
该题最难得部分在于筛选
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//A选手说:B第二,我第三;//B选手说:我第二,E第四;//C选手说:我第一,D第二;//D选手说:C最后,我第三;//E选手说:我第四,A第一;int main(){ int A = 0, B = 0, C = 0, D = 0, E = 0; for (A = 1; A < 5; A++) for (B = 1; B < 5; B++) for (C = 1; C < 5; C++) for (D = 1; D < 5; D++) for (E = 1; E < 5; E++) { if ((B == 2) + (A == 3) == 1) if ((B == 2) + (E == 4) == 1) if ((C == 1) + (D == 2) == 1) if ((C == 5) + (D == 3) == 1) if ((E == 4) + (A == 1) == 1) { int flag = 0;//用flag来看排名是否正确 flag |= 1 << (A - 1); flag |= 1 << (B - 1);//将每个选手的比特位来赋给flag,1为有排名 flag |= 1 << (C - 1);//0为此排名无人 flag |= 1 << (D - 1);//可知排名序列11011这种中间排名空缺的情况是不存在的 flag |= 1 << (E - 1); while (flag) { if ((flag & 1) == 0)//如果该位和1与为0,跳出循环 break; flag >>= 1; } if (flag == 0) printf("A:第%d B:第%d C:第%d D:第%d E:第%d\n", A, B, C, D, E); } } system("pause"); return 0;}
题目2
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯
的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//A说:不是我。//B说:是C。//C说:是D。//D说:C在胡说int main(){ char killer = 0; for (killer = 'a'; killer <= 'd'; killer++) if (3 == (killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd')) break; printf("killer is %c\n", killer); system("pause"); return 0;}
阅读全文
0 0
- 简单的逻辑判断题
- 一道简单逻辑判断题
- JSTL中if...else...逻辑判断的简单用法
- 一道六嫌疑犯的逻辑判断题
- 一道六嫌疑犯的逻辑判断题
- 弱逻辑的Handlebar实现简单判断逻辑需要自定义Helper
- 逻辑判断的代码
- CheckBox的逻辑判断
- 条件判断的逻辑
- 逻辑判断题--总结
- 一些简单的逻辑
- 小车的前进逻辑判断
- 比较纠结的逻辑判断
- Map.get()的逻辑判断
- 简单逻辑题
- 面试逻辑题:三个精灵说真话假话的判断难题
- 逻辑判断
- 逻辑判断
- oracle 表空间管理命令
- Python操作分布式流处理系统Kafka
- Part Itemtype解读(3): View
- springcloud架构搭建(一) Eureka服务器搭建及配置
- 原生js遍历json对象,获取key,value值
- 简单的逻辑判断题
- SQLSERVER单项选择题
- PHP+jquery +ajax实现无刷新分类参考
- qt各个版本的安装包
- 用户界面设计原则
- java 内部类
- 增量测试:自顶向下测试&自底向上测试
- CodeBlocks 使用问题处理(2)点击运行编译无反应
- C# 接口