解题思路:
李,张,王家一共九名孩子,第一名是李家孩子,第二名是王家孩子,不能并列,比赛结果各家总分相同
这题的重点在于各家总分相同,且名次不会重复
先用数学思路来理解,各家总分相同,即9名孩子总分:1+2+3+4+5+6+7+8+9=45分
每一家的分数只能是45的被除数,即45/3=15分/每家;
也就是说,第三名肯定是张家的孩子.
我们不妨再换个思路来想,从赌博的方式来思考:
假设李张王三个人是牌友,且三人都只剩三张牌, 假设是玩逆向干瞪眼:
(干瞪眼的玩法就是下一家只能出比上一家大的牌,且那张牌只能是相邻的,即上家出3下家只能4,先
如果没有则跳过出牌,优先出完手中的牌的玩家获胜)
(逆向干瞪眼则是下一家只能出比上一家小的,且相邻的牌,即上家出3,下家只能出2)
那么根据题意,三人手牌为:
李:9,4,2
王:8,6,1
张:7,5,3
根据手牌,最后一位出牌的是王家,所以王是最后一名
通过直接提交代码:
#include<stdio.h>
int main()
{
printf("W");
return 0;
}
都可以通过提交,反馈的也是正确,验证了我的想法.
但是!!!!!!
直接提交张家和李家最后一名也可以:
#include<stdio.h>
int main()
{
printf("L");
return 0;
}
和
#include<stdio.h>
int main()
{
printf("Z");
return 0;
}
注意事项:
参考代码:
#include <stdio.h>
int score[4][4];
int main(){
int i,j,k,who;
score[1][1]=7;//二维数组score的第1行可以看成一个一维数组,表示张家孩子成绩
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++) //张家第二范围 ,3个for语句说明了3家中都没有相连名次
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])
//第一个与表示张家第二成绩不同于李家王家,第2,3,4,个与表 示3家第3名成绩不一样
{
score[1][2] =i;
score[1][3]=15-i-7;
score[2][2]=j;
score[2][3]=15-j-8;
score[3][2]=k;
score[3][3]=15-k-9;
}
for(who=0,i=1;i<=3;i++,printf("\n"))
for(j=1;j<=3;j++)
{
printf("%d",score[i][j]);
if(score[i][j]==1) //最后一名得分成绩为1
who=i;
}
if(who==1)
printf("最后一名是张家孩子\n");
else if(who==2)
printf("最后一名是王家孩子\n");
else
printf("最后一名是李家孩子");
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:590 |
【偶数求和】 (C语言代码)浏览:460 |
整除问题 (C语言代码)浏览:594 |
杨辉三角 (C语言代码)浏览:734 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:465 |
母牛的故事 (C语言代码)浏览:519 |
C语言训练-排序问题<1> (C语言代码)浏览:369 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:469 |
C语言程序设计教程(第三版)课后习题10.7 指针(C语言代码)浏览:597 |
C语言训练-自守数问题 (C语言代码)浏览:702 |