博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
五人预测比赛结果均答对一半,求比赛名次
阅读量:4031 次
发布时间:2019-05-24

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

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第一,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

    此题没说没有并列情况,所以我们要考虑到并列第几的情况,也要考虑到跨名次情况(即没有1就有2345等)。首先假设D选手说的“C最后”认为为C是第五,然后对于存在并列第几情况的问题,引进二进制。通过将1(0001)移位,再与0(0000)进行或运算,最后判断最终得到的二进制数中有没有0,存在0,则说明有跨名次的情况;不存在0,则得到满足题意正确的比赛名次。

代码如下:

#include
#include
int main(){ int a,b,c,d,e,val,flag; for(a=1;a<6;a++) {for(b=1;b<6;b++) {for(c=1;c<6;c++) {for(d=1;d<6;d++) {for(e=1;e<6;e++) {if((1==(b==1)+(a==3))&&(1==(b==2)+(e==4))&&     (1==(c==1)+(d==2))&&(1==(c==5)+(d==3))&&     (1==(e==4)+(a==1))) /*当a=3;将1(0001)左移2位变为0100(有第三),a再和0000进行或运算(|)就得到0100*/ { val=0;     flag=1;     val|=(1<<(a-1));     val|=(1<<(b-1));     val|=(1<<(c-1));     val|=(1<<(d-1));     val|=(1<<(e-1));     while(val)     {      if(val%2==0)     {      flag=0;     }     val/=2;     }     if(flag==1)     {    printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);     } }    } } } } } system("pause"); return 0;}

小游戏:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。

A说:不是我。

B说:是C

C说:是D

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

代码如下:

#include
#include
 int main(){int killer=0;for(killer='a';killer<'e';killer++){if(3==(killer!='a')+(killer=='c')+(killer=='d')+(killer!='d'))/*3人说真话,1人说假话的逻辑表示*/    {    printf("killer is %c",killer);    }}   system("pause");return 0;}

本文出自 “” 博客,请务必保留此出处

转载地址:http://bjlbi.baihongyu.com/

你可能感兴趣的文章
深度学习库提供了什么?
查看>>
Theano中如何只更新一部分权重,用法及理由。
查看>>
深度学习实践
查看>>
机器学习探索性数据分析的数据类型
查看>>
机器学习探索性数据分析的数据类型(补充)
查看>>
机器学习中典型工作流程
查看>>
数据挖掘十大算法 and 算法概述
查看>>
机器学习中样本数据预处理
查看>>
机器学习中样本缺失值的处理方法
查看>>
机器学习中样本比例不平衡的处理方法
查看>>
机器学习中的文本处理
查看>>
K近邻分类
查看>>
Java集合
查看>>
Java泛型、反射、注解、Lambda表达式
查看>>
Spring框架入门
查看>>
Linear Regression及各种线型回归在正则化中的应用
查看>>
朴素贝叶斯算法
查看>>
逻辑回归
查看>>
感知机 - 支持向量机
查看>>
决策树算法(ID3、C4.5、CART)
查看>>