张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得 9 分,跑第二得 8 分,依次类推。比赛结果显示各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获第二名的是王家的孩子。获得最后一名的是谁家的孩子?
算法思想
按题目的条件,共有 1+2+3+…+9=45 分,每家孩子的得分应为 15 分。
根据题意可知,获第一名的是李家的孩子,获第二名的是王家的孩子,则可推出:获第三名的一定是张家的孩子。
由“这些孩子没有同时到达终点的”可知:名次不能并列,由“没有一家的两个或三个孩子获得相连的名次”可知:第四名不能是张家的孩子。
程序代码
#include <stdio.h>
int score[4][4];
int main()
{
int i,j,k,who;
score[1][1]=7;
score[2][1]=8;
score[3][1]=9;
for(i=4;i<6;i++)
for(j=4;j<7;j++)
for(k=4;i!=j&&k<7;k++)
if(k!=i&&k!=j&&15-i-score[1][1]!=15-j-score[2][1]
&&15-i