谁跑的最快?
小狗、小兔、小猫、小猴和小鹿参加百米赛跑,比赛结束后,
小猴说:“我比小猫跑得快。”
小狗说:“小鹿在我的前面冲过了终点线。”
小兔说:“我的名次排在小猴的前面,小狗的后面。”
请根据他们的回答排出名次。
这个问题从文字上分析很容易得出结果。
由1,得到局部排序为:小猫 < 小猴
由2,得到局部排序为:小狗 < 小鹿
由3,得到局部排序为:小猴 < 小兔 <小狗
综上,等到总的排序为:小猫 < 小猴 <小兔 < 小狗 < 小鹿
如果要由程序解答,则可通过遍历各个小动物的名次,得到一个符合条件的解:
int a, b, c, d, e = 0;// 对应为小狗, 小兔, 小猫, 小猴, 小鹿的名次
for (a = 1; a <= 5; a++) {
for (b = 1; b <= 5; b++) {
for (c = 1; c <= 5; c++) {
for (d = 1; d <= 5; d++) {
for (e = 1; e <= 5; e++) {
if ((d < c) && (e < a) && (b < d) && (b > a)) {
System.out.println("小狗: " + a);
System.out.println("小兔: " + b);
System.out.println("小猫: " + c);
System.out.println("小猴: " + d);
System.out.println("小鹿: " + e);
}
}
}
}
}
}
详细的可运行代码在这里。以上代码最终输出:
小狗: 2
小兔: 3
小猫: 5
小猴: 4
小鹿: 1
这个结果可表示在下表中:
程序的几重循环,可看成对上表按行的组合运算的处理。