最慢"/>
谁家的孩子跑的最慢
张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得 9 分,跑第 2 得 8 分,依此类推。比赛结果各家的总分相同,且这些孩子
没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的
是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?
思路:
一共有三家,一家有三个孩子,一共有9个结果,可定义一个3*3的二维数组,不能同时到达
终点即分数都不想同,同一家孩子没有相连的名字,即分数不能相连,又因为最后分数相等即45/3==15
李家孩子的了一个9分则第二个李家孩子得分不能超过5,王家的第二个孩子不能超过6,推测出张家第一个儿子
分数为7,张家第二个儿子不能超过6
程序:
#include <stdio.h>
main()
{int a[3][3],i,j,k;//各自家孩子第一个孩子的分数a[0][0]=7; //张家第一个孩子,可以推算出来a[1][0]=8; //王家第一个孩子a[2][0]=9; //李家第一个孩子for (i=4;i<6;i++)for (j=4;j<7;j++)for (k=4;k<7;k++){if ((i!=j&&i!=k&&j!=k)&& //各自家第二个孩子分数不能相等(15-i-a[0][0]!=15-j-a[1][0] && //各自家第三个孩子分数不能相等15-i-a[0][0]!=15-k-a[2][0] &&15-j-a[1][0]!=15-k-a[2][0])){a[0][1]=i;a[0][2]=15-7-i; //给各自家第二个孩子赋值;给第三个孩子赋值a[1][1]=j;a[1][2]=15-8-j; // 第三个孩子分数==总分数-第一个孩子分数-第二个孩子分数a[2][1]=k;a[2][2]=15-9-k;}}for (i=0;i<3;i++){for (j=0;j<3;j++){if (a[i][j]==1) //1为分数最小的{if (i==0)printf("张家");else if (i==1)printf("王家");elseprintf("李家");}}printf("\n");}
}
更多推荐
谁家的孩子跑的最慢
发布评论