跳水运动员预测比赛结果排名次问题

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

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

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

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

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

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

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

  1. 可以并列:

#include<stdio.h>

#include<stdlib.h>

main()

{

int a, b, c, d, e = 0;

int flag=0;

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 ((b == 1) + (a == 3) == 1 && (b == 2) + (e == 4) == 1 && (c == 1) + (d == 2) == 1 && (c == 5) + (d == 3) == 1 && (e == 4) + (a == 1) == 1)

{

printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);

flag++;

}

}

}

}

}

}

if (flag == 0) printf("Not find.\n");

system("pause");

}

2.不可并列

#include<stdio.h>

#include<stdlib.h>

main()

{

int a, b, c, d, e = 0;

int flag=0;

for (a = 1; a < 6; a++)

{

for (b = 1; b < 6; b++)

{

if (b == a) continue;

for (c = 1; c < 6; c++)

{

if (c == b || c == a) continue;

for (d = 1; d < 6; d++)

{

if (d == c || d == b || d == a) continue;

for (e = 1; e < 6; e++)

{

if (e == d || e == c || e == b || e == a) continue;

if ((b == 1) + (a == 3) == 1 && (b == 2) + (e == 4) == 1 && (c == 1) + (d == 2) == 1 && (c == 5) + (d == 3) == 1 && (e == 4) + (a == 1) == 1)

{

printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);

flag++;

}

}

}

}

}

}

if (flag == 0) printf("Not find.\n");

system("pause");

}

时间: 2024-10-11 17:14:47

跳水运动员预测比赛结果排名次问题的相关文章

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

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三.B选手说:我第二,E第四.C选手说:我第一,D第二.D选手说:C最后,我第三.E选手说:我第四,A第一.比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 初次见到这种题,感觉很难将其抽象出来 用编程来解决它,通过查阅相关文档,终于灵光乍现!现总结思路如下: 通过排列组合知识,可以这样来理解  A B C D E五个人,每个人分别可以有五个位置去 即第一 第二...到第五 5个位置 ,于是这样下来就有25种情

五人预测比赛结果均答对一半,求比赛名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 此题没说没有并列情况,所以我们要考虑到并列第几的情况,也要考虑到跨名次情况(即没有1就有2.3.4.5等).首先假设D选手说的"C最后"认为为C是第五,然后对于存在并列第几情况的问题,引进二进制.通过将1(0001)移位,再与0(00

编程解决实际问题--预测比赛结果,确定凶手

2. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. #include <stdio.h> int main() {     int a,b,c,d,e;      for(a=1;a<=5;a++)       for(b=1;b<=5;b++)         for(c=

五个运动员参加比赛根据他们说的话判断结果

#define _CRT_SECURE_NO_WARNINGS 1//题目要求:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 //A选手说:B第二,我第三://B选手说:我第二,E第四://C选手说:我第一,D第二://D选手说:C最后,我第三://E选手说:我第四,A第一://比赛结束后,每位选手都说对了一半,请编程确定比赛的名次.#include <stdio.h>#include<stdio.h> int main(){int a = 0, b = 0, c =

ACM比赛得分排名,HDU 2093

考试排名 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15541    Accepted Submission(s): 5464 Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢?我们做好了题目的解答,提交之后,要么"AC",要么错误,不管怎样错法,

Kaggle 自行车租赁预测比赛项目实现

作者:大树 更新时间:01.20 email:[email protected] 数据处理,机器学习 回主目录:2017 年学习记录和总结 .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { b

C语言:5位运动员每人说了两句话,均有一句话正确,预测比赛结果

#include<stdio.h> int main() { int A;   int B; int C; int D; int E; 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==1)+(A==3))==1&& ((B==2)+(E==4))==1&& ((C=

5位选手说两个猜测,都说对一半,预测比赛名次问题

#include <stdio.h>   int main()   {   int A,B,C,D,E;     for( A=1; A<=5; A++)          {          for( B=1; B<=5; B++)              {              for( C=1; C<=5; C++)                  {                  for( D=1; D<=5; D++)             

C语言 &#183; 3000米排名预测

算法提高 3000米排名预测 时间限制:1.0s   内存限制:256.0MB 问题描述 3000米长跑时,围观党们兴高采烈地预测着最后的排名.因为他们来自不同的班,对所有运动员不一定都了解,于是他们分别对自己了解的一些运动员的实力作出了评估,即对部分运动员做了相对排名的预测,并且告诉了可怜留守的班长.因为无聊,于是他们就组团去打Dota去了.比赛结束后他们向班长询问最后的排名,但班长不记得了,只记得他们中哪些人的预测是正确的,哪些人的预测是错误的.他们想知道比赛的排名可能是什么. 输入格式 第