张王李三家各有3个孩子,9个孩子赛跑,规定第一得9分,第二得8分,以此类推,最后比赛结果每家得分一样,且9个孩子得分不一,每家没有两个或三个孩子获得相连名次,且第一名是李家孩子,第二名是王家孩子。求解获得最后一名是谁家孩子
#include <stdio.h>
int score[4][4];
void 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("最后一名是李家孩子");
}