【发布时间】:2014-08-17 19:11:14
【问题描述】:
我有一个计算机科学课的作业。我已经考虑了两个多星期没有成功,所以我决定在这里尝试一下。
游戏由 4 名 CIA 特工使用 4 个相邻的电话亭组成。他们按照一定的规则一次一个地到达一组展位:
1 - 代理选择一个其相邻的两个展位未被占用的展位(这包括位于集合边缘的展位);
2 - 如果不满足上述条件,代理商选择只有一个相邻展位空置的展位;和
3 - 如果两个条件都失败,代理选择任何展位。
根据规则,4个代理商和4个展位共有8种不同的展位占用方式。示例:代理#1 占据第一个展位(左边缘一个),然后代理#2 占据第三个展位(从左到右),然后代理#3 占据第四个展位,最后代理#4 占据第二个展位。
我们被要求编写一个代码,根据这些规则计算 19 个代理占用 19 个展位的方式数。
我对这个问题的自然选择是创建一个布尔数组,其中 false 代表一个空的展位,true 代表一个占用的展位:
public class AgentGame {
private boolean[] booths;
private int numberOfBooths, counter;
public AgentGame(int nb) {
counter = 0;
numberOfBooths = nb;
booths = new boolean[numberOfBooths];
}
我一直在想一种方法来实现两种方法,一种是根据规则填充摊位,另一种是计算可以占用摊位的所有不同组合。但我无法弄清楚,还没有。这里有什么想法吗?提前致谢。
【问题讨论】:
-
尝试使用递归方法。如果你不明白,我会在一个小时内发布一些代码。
标签: java arrays boolean combinatorics