您的位置:首页 > 其它

谁家孩子跑最快.....

2006-12-15 09:39 211 查看
/*问题描述:张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,
跑第一得9分,跑第2得8分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,
也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。
问获得最后一名的是谁家的孩子?

*/
#include<iostream>
using namespace std;
int Label[9],Score[3];//标记各名次是谁家孩子(1-Li,2-Wang,3-Zhang) ,三家孩子得得分
int main(){
//每家孩子只能得15分
void Run(int P);
Score[0]=9;
Label[0]=1;/*李家孩子第一名*/
Score[1]=8;
Label[1]=2;/*王家孩子第一名*/
Run(3);
return 0;

}

void Run(int P){/*P代表当前为第几名*/
if(P==10){
if(Score[0]==15 && Score[1]==15 && Score[2]==15)
for(int i=0;i<9;i++){
switch(Label[i]){
case 1:cout<<"第"<<i+1<<"名为:"<<"李家的孩子"<<endl;break;
case 2:cout<<"第"<<i+1<<"名为:"<<"王家的孩子"<<endl;break;
case 3:cout<<"第"<<i+1<<"名为:"<<"张家的孩子"<<endl;break;
default:break;
}
}
return;
}
else{
for(int i=1;i<=3;i++){
if(Label[P-2]!=i){//前后必须不同家
Score[i-1]+=10-P;
Label[P-1]=i;
Run(P+1);
Score[i-1]-=10-P;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: