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

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

初次见到这种题,感觉很难将其抽象出来 用编程来解决它,通过查阅相关文档,终于灵光乍现!现总结思路如下:

通过排列组合知识,可以这样来理解  A B C D E五个人,每个人分别可以有五个位置去 即第一 第二...到第五 5个位置 ,于是这样下来就有25种情况。

只要在这25种情况中找出同时符合题目那五个条件那种情况即可,这里在怎样编写条件这个地方,我还小小纠结了好一会~~

代码如下:

 1 #include <stdio.h>
 2 int Over(int arr[])//判断数组内的值是否有重复的
 3 {
 4     int i = 0;
 5     int j = 0;
 6     for (i = 0; i < 5; i++)
 7         for (j = i + 1; j < 5; j++)
 8         {
 9             if (arr[i] == arr[j])
10                 return 0;
11         }
12         return 1;
13 }
14
15 int main()
16 {
17     //数组arr[0]~arr[4]分别代表A B C D E
18     //arr[i]的值表示其名次
19     int arr[5] = { 0 };
20     for (arr[0] = 1; arr[0] <= 5; arr[0]++)
21        for (arr[1] = 1; arr[1] <= 5; arr[1]++)
22            for (arr[2] = 1; arr[2] <= 5; arr[2]++)
23                for (arr[3] = 1; arr[3] <= 5; arr[3]++)
24                    for (arr[4] = 1; arr[4] <= 5; arr[4]++){
25                     if (  (arr[1] == 2) + (arr[0] == 3) == 1
26                        && (arr[1] == 2) + (arr[4] == 4) == 1
27                        && (arr[2] == 1) + (arr[3] == 2) == 1
28                        && (arr[2] == 5) + (arr[3] == 3) == 1
29                        && (arr[4] == 4) + (arr[0] == 1) == 1)
30                     if (Over(arr)!=0)
31                        printf("A:%d B:%d C:%d D:%d E:%d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
32                     }
33     return 0;
34 } 
时间: 2024-08-04 06:37:56

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

5位运动员参加了10米台跳水比赛,每位选手都说对了一半,请编程确定比赛的名次

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=1;c<=5;c++

c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次

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

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

#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 =

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

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

谋哥:大神都是这么练出来的--打一个5厘米口径的洞,打进去10米!

[每天一原创干货,第六十六篇] 我不是说我帅了! 昨天一位大神(他在自己的领域早就成神)答应我写一篇文章描述他的帅,就分享一个价值3万的江湖技法.他要求不能暴露它名字.头像,这个有难度,不过我答应他,就为了那价值3万的神技! 大家都知道,百度知道的回答是不能带超链接的!但是,为啥说人家帅?那是这位帅神能够玩到带几十个超链接.百度都怕他,所以在百度知道这个领域他是超神的存在.今天他免费教谋哥和其他牛人这个技法,当然了,我们是一个圈子的.圈子名字,我就不告诉你了. 先截图看一般情况下,带超链接的百度

日销10万台的乐视商城如何颠覆传统电商

据乐视TV官方数据消息,在9月19日的"919乐迷节",乐视商城实现超级电视销量10万台.配件超4万件销量,而其总销售金额和参与人数也分别达到4亿元.800万的规模,刷新了超级电视创中国电视行业单日销售量.销售额纪录,乐视商城也创下中国B2C商城单日单品牌电视销售量.销售额纪录. 这个数据对于乐视来说或许只是一个里程碑,但对于整个智能电视行业来说却是一个转折点,其中这个数据透露出来的超级电视走势,正在预示着成为现实. 超级电视的生存法则:多位一体 一年前,乐视TV发布超级电视的时候,很

Ubuntu Server(Ubuntu 14.04 LTS 64位)安装libgdiplus2.10.9出错问题记录

首先下载libgdiplus2.10.9安装包 wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2 tar -jxvf libgdiplus-2.10.9.tar.bz2 cd libgdiplus-2.10.9 进入目录开始configure编译 ./configure --prefix=/usrmake 将libgdiplus安装在/usr目录下 发现在该操作系统报错了:如下 g

如何下载10米等高距的地表地形图

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 二.下载地图 这里以下载"拉萨市"地表地形图为例. 启动水经注万能地图下载器,切换在线地图为"地形.维基", 在查询定位中输入"拉萨市",如下图所示. 点击"搜索"按钮定位到拉萨市并出现该地区的行政边界,选择工具栏"框选下载区域",框选需要下载的区域,双击框选的区域,开始新建任务,如下图所

一位程序员工作10年总结的13个忠告

原文网址:http://zhangxpower.iteye.com/blog/1145448 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告. 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程 序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.