谁家的孩子跑得最慢
问题描述:
张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大
小,跑第一得 9 分,跑第 2 得 8 分,依此类推。比赛结果各家的总分相同,且这些孩子
没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的
是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?
思路:
三家总分数为45分。每家分得15分,已知李家拿下9分,王家拿下8分。得出张家拿下7分。从题目可得每家中三个孩子所得名次不并列。由此可以推出李家得分为9、4、2。王家得分为8、6、1。张家得分为7、5、2。
代码为:
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//用二维数组存放三家孩子的得分
int score [] [] = new int [3] [3];
int i , j , k , who;
/*
*按已知条件进行初始化;
* score[0]:存储张家三个孩子的得分
* score[1]:存储王家三个孩子的得分
* score[2]:存储李家三个孩子的得分
*/
score[0] [0] =7;
score[1] [0] =8;
score[2] [0] =9;
for(i = 4;i < 6;i++) //i:张家孩子在4到6分数段之间可能的分数
for(j = 4;j < 7;j++) //j:王家孩子在4到6分数段之间可能的分数
for(k = 4;i != j && k < 7;k++)//k:李家孩子在4到6分数段之间可能的分数
//分数不能并列
if(k != i && k != j
&& 15 - i - score[0][0] != 15 - j - score[1][0]
&& 15 - i - score[0][0] != 15 - k - score[2][0]
&& 15 - j - score[1][0] != 15 - k - score[2][0])
{
//将满足条件的结果存储到数组里
score[0][1] = i; //张家第2个孩子得分
score[0][2] = 15 - i - 7; //张家第3个孩子得分
score[1][1] = j;
score[1][2] = 15 - j - 8;
score[2][1] = k; //李家第2个孩子得分
score[2][2] = 15 - k - 9; //李家第3个孩子得分
}
System.out.println("每家孩子的得分如下:\n");
for(who=0,i=0;i<3;i++) {
for (j=0;j<3;j++ ) {
System.out.println(score[i][j]+ " ");//输出三家孩子的得分情况
if(score[i][j]==1)
who = i;
}
System.out.println("\n");
}
//输出最后判断的结果
switch (who) {
case 0: //0,代表张家
System.out.println("最后一名的孩子来自张家");
break;
case 1: //1,代表王家
System.out.println("最后一名的孩子来自王家");
break;
case 2: //2,代表李家
System.out.println("最后一名的孩子来自李家");
break;
}
}
}