一个游戏
??????不知道屏幕前的你是否也玩过这样的一个游戏,在游戏里,你可以将两个低等级的单元可以合成为一个次高等级的单元,而两个次高等级的单元可以合成为一个高等级的单元,而这样的合成游戏中,往往也会具有网格的限制,每一个单元都会占据一个网格,而总的网格是有限的,并且在网格中添加单元时,只能添加最低的等级的单元。那总的网格数与我们单元的最高等级之间是否有一定的数学关系呢?想必是有的,先来带大家看一下我最近玩过的一款游戏,是一款合成恐龙的游戏。
这张图片就表现出了网格的概念,每一个单元占据一个网格,而一共有
15
15
15个网格,并且每两个同等级的单元可以合成为一个高等级的单元。
问题分析与解决
分析
??????遇到了逢二进一的问题,我们首先就会想到二进制的问题。的确,我们在探究一个有
15
15
15个网格可以放置的最大的单元等级是多少的问题时,我们可以采取这样的思路,将我们的操作分成了两个操作:添加操作与融合操作。添加操作即每次往这些网格中放置一个最低等级的单元(这也是问题的一个限制),融合操作为将满足融合条件(同一等级的单元数量大于等于
2
2
2)的单元进行融合。并且,为了最大化我们的网格空间,我们将融合操作的优先级放到添加操作的前面。我们前面提到,这样的一个问题是一个二进制逢二进一的问题,即完全可以将这个问题看作一个二进制计数的问题。
抽象
??????按照我们上述的规定,融合操作优先级大于放置操作优先级,那这个问题已经转化为了一个二进制计数的问题。我们先把网格数量减少到
3
3
3。我们先添加一个最低单元,二进制数代表为
(
1
)
(1)
(1)。此时没有满足融合条件,我们继续添加。现在有两个最低等级的单元,但还没有融合,我们找不到一个合适的二进制数对其进行表示,我们规定一个二进制数
(
02
?
)
(02*)
(02?),这里的
′
?
′
'*'
′?′ 代表的是逢二已满,但没有进位的中间态。此时,占据的网格数量是2,然后进行融合操作,融合为一个高等级的单元,对应的二进制数代表为
(
10
)
(10)
(10),占据一个网格。 ??????如果想融合成一个等级为三的单元,我们需要几个一级单元呢?很明显是
4
4
4个,那
4
4
4个等级为一的单元是如何被放置在这些网格上的呢?很明显在之前
(
10
)
(10)
(10)的基础上,又增添了两个,随后变成了
(
12
?
)
(12*)
(12?),再次融合变成
(
2
?
0
)
(2*0)
(2?0),再次融合变成
(
100
)
(100)
(100)。 ??????即融合成一个三级的单元,需要至少三个网格,我们这里的网格数定义为二进制数上的每一位代表的数量之和,即所需要的最少的网格数等于在整个添加、融合过程中二进制数上每一位之和的最大值(包括中间态),在二进制合成游戏下,我们想融合一个等级为
N
N
N的单元,至少需要
N
N
N个网格。
拓展
??????倘若存在三进制的单元游戏,或者多进制的单元合成游戏(
M
M
M进制),那生成一个等级为
N
N
N的单元至少需要多少个网格呢。倘若生成等级为
N
N
N的单元,可知其对应的
M
M
M进制数的第
N
N
N位应该为零,从第一位到第
(
N
?
1
)
(N-1)
(N?1)位,都不为
0
0
0。并且首位为
M
M
M,其余位为
(
M
?
1
)
(M-1)
(M?1),即所占据的网格数量为:
(
M
+
(
N
?
2
)
(
M
?
1
)
)
=
(
M
N
?
M
?
N
+
2
)
(M+(N-2)(M-1))=(MN-M-N+2)
(M+(N?2)(M?1))=(MN?M?N+2),将
M
=
2
M=2
M=2代入可得在二进制下,这个关系为
N
N
N。
验证
??????倘若我们的计算无误,那上述提到的那款小游戏所生成的单元的最大等级不会超过
15
15
15,倘若超过
15
15
15,则无法进行合成。同时,小游戏中有两类角色,所以每个角色的最高等级不会超过
14
14
14。通过查看游戏图鉴可知,两类角色的最大等级均为
11
11
11,可知,游戏内部还是有其合理性的。
|