题目内容:
编程:甲、乙、丙三位球迷分别预测已进入半决赛的四支球队的名次如下:
甲预测:A队第1名,B队第2名;
乙预测:C队第1名,D队第3名;
丙预测:D队第2名,A队第3名。
比赛结果证实,甲、乙、丙预测各对一半。
试求A、B、C、D四队的名次(没有名次相同的情况)。
提示:本题的编程序方法可采用典型的枚举法,即“循环+选择”编程定式。可设变量a代表A队的名次,变量b代表B队的名次,变量c代表C队的名次,变量d代表D队的名次。变量a、b、c、d的取值范围都是1~4。这样就可以用四重循环结构得到四队不同名次的所有组合,对每个组合再来判断是否满足甲、乙、丙三人的预测,如果满足,则是问题的解。
进一步提示:判断条件的写法,以甲预测为例,A队第1名可表示a==1,B队第2名可表示为b==2,预测对一半可表示为(a==1)!=(b==2),或者((a == 1) + (b == 2) == 1),其它类同。
程序优化:也可采用三重循环结构,因为a、b、c、d之和是10,当a、b、c的取值确定以后,d的取值就确定了,即d=10-a-b-c。
采用这种枚举法编程的题目还有很多,如百元百鸡问题、韩信点兵问题以及数字组合问题等。
输入格式:
无
输出格式ÿ