
这题目用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第一。
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛的实际名次 展开
A说:B第二,我第三。
B说:我第二,E第四。
C说:我第一,D第二。
D说:C最后,我第三。
E说:我第四,A第一。
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛的实际名次 展开
3个回答
展开全部
这个很容易了 ,5个人每人两种答案,共2*2*2*2*2=32种组合,既然说每个人都对了一半,那这32种组合中肯定有一个对的了。
这时,你只需用一个五层的循环语句,最内加if嵌套判断各个组合的名次是否重复,5个数都不重复就ok了
说起来有点罗嗦,不过程序容易实现的,你可以试试 这和楼上的有点不同 不过容易理解
这时,你只需用一个五层的循环语句,最内加if嵌套判断各个组合的名次是否重复,5个数都不重复就ok了
说起来有点罗嗦,不过程序容易实现的,你可以试试 这和楼上的有点不同 不过容易理解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/************************************************
*描述:
*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;
}/************************************************/
*描述:
*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;
}/************************************************/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
枚举 每一种情况,
就是 每个人的排名状态
五个人 有 P(5,5) 的状态, = 5*4*3*2= 120 个
然后 用这些状态 检测每个人的说法,~, 复合的就是结果
就是 每个人的排名状态
五个人 有 P(5,5) 的状态, = 5*4*3*2= 120 个
然后 用这些状态 检测每个人的说法,~, 复合的就是结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询