谁家孩子跑最慢 张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短 跑,规定不分年龄大小,跑第一得9分,跑第二得8分,一次类推。比赛结果 各家的总分相同,且这些孩子没有同时到达终点,也没有一家的两个或三 个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王 家的孩子。求各家各个孩子的得分,获得最后一名的是谁家的孩子? **输入格式要求:提示信息:"The last one arrived to end is a child from family Zhang.\n" **输出格式要求:"%d " 程序运行示例如下: 7 5 3 8 6 1 9 4 2 The last one arrived to end is a child from family Wang.
适用初学者,刚学穷举与递推的时候。
#include<stdio.h>
int main(void)
{
int a,b,c,d,l1,l2,l3;
for(a=1;a<8;a++){
for(b=1;b<8;b++){
for(c=1;c<8;c++){
for(d=1;d<8;d++){
if(a>b&&c>d&&a!=c&&a!=d&&b!=c&&b!=d){
if(a+b==6&&c+d==7&&a-b!=1&&c-d!=1){
for(l1=1;l1<8;l1++)
{
for(l2=1;l2<8;l2++)
{
l3=15-l1-l2;
if(l1>l2&&l2>l3&&l1!=a&&l1!=b&&l1!=c&&l1!=d&&l2!=a&&l2!=b&&l2!=c&&l2!=d&&l3!=a&&l3!=b&&l3!=c&&l3!=d)
{
printf("%d %d %d \n8 %d %d \n9 %d %d \n",l1,l2,l3,c,d,a,b);
if(a==1||b==1)
{
printf("The last one arrived to end is a child from family Zhang.\n");
}
else if(c==1||d==1)
{
printf("The last one arrived to end is a child from family Wang.\n");
}
else
{
printf("The last one arrived to end is a child from family Li.\n");
}
}
}
}
}
}
}
}
}
}
return 0;
}