题目链接:http://115.28.203.224/problem.php?cid=1010&pid=33
题目描述
张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第2得8分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?
输入
输出
输出最后一名的那家的姓的一个字母且以大写输出(若为张家,则输出Z)
提示
按题目的条件,共有1+2+3+...+9=45分,每家的孩子的得分应为15分。根据题意可知:获第一名的是李家的孩子,获第二名的是王家的孩子,则可推出:获第三名的一定是张家的孩子。由“这些孩子没有同时到达终点的”可知:名次不能并列,由“没有一家的两个或三个孩子获得相连的名次”可知:第四名不能是张家的孩子。
代码
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int score[3][3]; 6 int i, j, k, name; 7 score[0][0] = 7; 8 score[1][0] = 8; 9 score[2][0] = 9; 10 for(i = 4; i < 6; i++) 11 for(j = 4; j < 7; j++) 12 for(k = 4; i != j && k < 7; k++) 13 if(k!=i&&k!=j&&15-i-score[1][1]!=15-j-score[2][1]&&15-i-score[1][1]!=15-k-score[3][1]&&15-j-score[2][1]!=15-k-score[3][1]) 14 { 15 score[0][1] = i; 16 score[0][2] = 15 - i - 7; 17 score[1][1] = j; 18 score[1][2] = 15 - j - 8; 19 score[2][1] = k; 20 score[2][2] = 15 - k - 9; 21 } 22 for(name = 0, i = 1; i <= 3; i++) 23 for(j = 1;j <= 3; j++) 24 if(score[i][j] == 1) 25 name = i; 26 if(name == 1) 27 cout<<"Z"; 28 else if(name == 2) 29 cout<<"W"; 30 else 31 cout<<"L"; 32 return 0; 33 }