这题目用C或C++应该怎么编写求答案?

5位跳水高手将参加10M高台跳水决赛,有好事者让5人据实力预测比赛结果。A说:B第二,我第三。B说:我第二,E第四。C说:我第一,D第二。D说:C最后,我第三。E说:我第... 5位跳水高手将参加10M 高台跳水决赛,有好事者让5人据实力预测比赛结果。
A说:B第二,我第三。
B说:我第二,E第四。
C说:我第一,D第二。
D说:C最后,我第三。
E说:我第四,A第一。
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛的实际名次
展开
 我来答
德朴数财经
2009-03-28 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:17.7万
展开全部
这个很容易了 ,5个人每人两种答案,共2*2*2*2*2=32种组合,既然说每个人都对了一半,那这32种组合中肯定有一个对的了。
这时,你只需用一个五层的循环语句,最内加if嵌套判断各个组合的名次是否重复,5个数都不重复就ok了
说起来有点罗嗦,不过程序容易实现的,你可以试试 这和楼上的有点不同 不过容易理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2009-03-23 · TA获得超过2326个赞
知道小有建树答主
回答量:419
采纳率:83%
帮助的人:233万
展开全部
/************************************************
*描述:
*A说:B第二,我第三。
*B说:我第二,E第四。
*C说:我第一,D第二。
*D说:C最后,我第三。
*E说:我第四,A第一。
*运行结果:3 1 5 2 4
************************************************/
#include <iostream>
using namespace std;

int main()
{
for (char A = '1';A < '6';A++)
{
for(char B = '1';B < '6';B++)
{
if(A == B) continue;//不可能存同名次
for (char C = '1';C < '6';C++)
{
if (A == C || B == C ) continue;
for(char D = '1';D < '6';D++)
{
if (A == D || B == D || C == D) continue;
for(char E = '1';E < '6';E++)
{
if (A == E || B == E || C == E || D == E) continue;
if((A == '3')^(B == '2') && (B == '2')^(E == '4')
&& (C == '1')^(D == '2') && (C == '5')^(D == '3')
&& (E == '4')^(A == '1')) //对一句,错一句相当于是异或运算
cout<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<E<<" \n";
}
}
}
}
}
return 0;
}/************************************************/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阴影中的猫猫
2009-03-22 · TA获得超过1199个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:400万
展开全部
枚举 每一种情况,

就是 每个人的排名状态

五个人 有 P(5,5) 的状态, = 5*4*3*2= 120 个

然后 用这些状态 检测每个人的说法,~, 复合的就是结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式