📄
字号:
问题描述:5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果.
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一.
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出
比赛的实际名次.
解答:
(1)解题的重要一步是要将人的想法表示成机器能够实现的表达式,数学公式或操作
步骤.
(2)用计算机解题很多时候涉及到逻辑运算.
(3)用计算机解题往往从很多种可能性中寻找其中的一种或几种,应此最容易想到的
是枚举法,枚举法就会遇到大量的重复计算的问题,自然要用到循环结构,我在
程序中用了五重循环,想不用循环,却没能实现,欢迎大家提供不用循环的更好
的解法,我的QQ 348653994
(4)程序在VC++6.0下通过.
(5)运行结果:
A的名次是:3
B的名次是:1
C的名次是:5
D的名次是:2
E的名次是:4
程序原码:
#include <iostream.h>
void main()
{
int cc1,cc2,cc3,cc4,cc5; //cc1到cc5代表5位选手的逻辑判断
int i,j,k,m,n; //i,j,k,m,n用于循环控制
int A,B,C,D,E; //A,B,C,D,E分别代表5位选手的名次
int g; //问题是否解决的BOOL值
A=0;B=0;C=0;D=0;E=0;g=0;
for(i=1;i<=5,A<=4;i++)
{ A++;
B=0;
for(j=1;j<=5,B<=4;j++ )
{
B++;
if(B==A)
B++;
C=0;
for(k=1;k<=5,C<=4;k++ )
{ C++;
if(C==A)
C++ ;
if(C==B)
C++;
D=0;
for(m=1;m<=5,D<=4;m++ )
{ D++;
if(D==A)
D++;
if(D==B)
D++;
if(D==C)
D++;
E=0;
for(n=1;n<=5,E<=4;n++)
{ E++;
if(E==A)
E++;
if(E==B)
E++;
if(E==C)
E++;
if(E==D)
E++;
cc1=((B==2)&&(!(A==3)))||((!(B==2))&&(A==3));
cc2=((B==2)&&(!(E==4)))||((!(B==2))&&(E==4));
cc3=((C==1)&&(!(D==2)))||((!(C==1))&&(D==2));
cc4=((C==5)&&(!(D==3)))||((!(C==5))&&(D==3));
cc5=((E==4)&&(!(A==1)))||((!(E==4))&&(A==1));
if((cc1+cc2+cc3+cc4+cc5)==5)
{ g=1;
cout<<"A的名次是:"<<A<<endl;
cout<<"B的名次是:"<<B<<endl;
cout<<"C的名次是:"<<C<<endl;
cout<<"D的名次是:"<<D<<endl;
cout<<"E的名次是:"<<E<<endl;
}
}
}
}
}
}
if(g!=1)
cout<<"Can't found!"<<endl;
}
发表评论
--------------------------------------------------------------------------------
相关专题:
--------------------------------------------------------------------------------
相关信息:
没有相关信息
--------------------------------------------------------------------------------
相关评论:
发表人:樊一梵 发表人邮件:fanchongbin@163.net 发表时间:2004-11-14 17:00:58
可以永递归来解决,源代码如下:
#include <iostream.h>
void main()
{
int cc1,cc2,cc3,cc4,cc5; //cc1到cc5代表5位选手的逻辑判断
int&nb ....详细内容
--------------------------------------------------------------------------------
发表人:樊一梵 发表人邮件:fanchongbin@163.net 发表时间:2004-11-14 17:04:58
不好意思,刚才粘错了
#include <iostream.h>
#define TURE 1
int count = 0;
int num[5] = {0,0,0,0,0};
int used[5 ....详细内容
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -