射击比赛

来自计算思维百科
跳转至: 导航搜索
射击比赛1.png

三个男孩甲、乙、丙用小口径步枪对右图上的特设靶子射击。每人射6发子弹(都射在靶子上,没有虚发),中靶的位置在图上用黑色圆点表示。计算成绩时,发现每人都中71分。同时,18发子弹中只有一发射中靶心得到50分。

现在告诉你:甲前2发子弹得22分,丙头发子弹得3分。

那么,你知道到底谁射中了靶心吗?

解决方案

方案1-填表法

填表法是根据题目部分范围条件,确定横行和纵行元素,排除不可能的结果范围,缩小解题的规模,并根据特定的条件,确定符合题目所有条件的答案,使得问题分解为较为容易解决的表格问题。具体做法如下:

题目要找出射中靶心的人,即拿到50分的人,这个人无法直接找出来,只能把三个人的成绩都找出来才知道。一共有3人,每人6发,也就是说,甲、乙、丙各有六个成绩,但由于不知道谁最后得到一发50分的成绩,所以我们要填的表的纵行元素暂时不要确定为甲、乙、丙三个人,用三个代号表示三组成绩即可,假设为A、B、C。横行为6次射击成绩,表格如下:

射击人、射击成绩次序

成绩1

成绩2

成绩3

成绩4

成绩5

成绩6

A

 

 

 

 

 

 

B

 

 

 

 

 

 

C

 

 

 

 

 

 

 

表格剩下内容要填的就是成绩,这个时候我们要把靶子上的圆点转化为数字化的成绩,由于从大到小筛选数字比较好选,于是我们按照从大到小的顺序排列成绩依次为:

50,25, 25,  20,20,20, 10, 10, 10, 5, 5, 3, 3, 2,2,  1,1,1

每人都得71分,即有三组数字,每组有6个数字,并且相加等于71,从大到小尝试对数字进行组合,排除相加等于71分但数字没有6个的,以及有6个但相加不等于71的数字组合:

假设A射中了靶心,即有一个数字50,与数字50相加等于71,并且是5个数字,所以,25,20都不能和50组合,于是从10开始假设验证。假设接下来的一个数字可以和前面的数字以及后面的数字相加得到71,并且到最后总共有6个数字,在排除后的数字组合范围中,从大到小进行假设验证,如果不成功,那么把当前数字替换为下一个数字,重复执行这个步骤,依次填表,得到A的成绩;

 

射击人、射击成绩次序

成绩1

成绩2

成绩3

成绩4

成绩5

成绩6

A

50

10

5

3

2

1

B

 

 

 

 

 

 

C

 

 

 

 

 

 

A确定之后,剩下的成绩有

25,   25,  20, 20, 20,  10,  10,  5,  3,  2,  1,  1

还是从大到小筛选,第一个为25,接下来按照剩下的5个数字和25相加等于71的原则,进行假设验证,验证的方法与A的成绩验证方法一样,得到B的成绩。之后剩下的就是C的成绩了。 得到成绩表格如下:

射击人、射击成绩次序

成绩1

成绩2

成绩3

成绩4

成绩5

成绩6

A

50

10

5

3

2

1

B

25

20

20

3

2

1

C

25

20

10

10

5

1

甲前2发的成绩是22分,B的成绩里刚好有两个数字相加等于22,而A和C都没有,因此B的成绩就是甲的成绩;

丙头发子弹得3分,A的成绩刚好有一个数字是3,而剩下的C没有,因此A的成绩就是丙的成绩;自然,C的成绩就是乙的成绩了。

射击人、射击成绩次序

成绩1

成绩2

成绩3

成绩4

成绩5

成绩6

50

10

5

3

2

1

25

20

20

3

2

1

25

20

10

10

5

1

于是射中靶心的就是甲了。

运用的计算思维

填表法将复杂的文字和图求解简化、分解,等价变化为简单直观明了的表格和表格元素的填写,使问题变得简单易解,有规律性,并在解决填表问题的时候采用符号代替为未知的成绩组别,体现了转化的计算思维。

参考资料

《魔法数学》  白丁 编著  现代出版社