* * * * * * *
* * * * * * *
Y * * * * * *
R Y * * Y * *
Y R Y R Y R R
R Y R Y R Y R
案例2:
* * * * * * *
* * * * * * *
* * * * * R *
* * * * R Y *
* * * R Y R *
Y Y R Y R Y R
如何检查行
和列
以解决这些情况?
您只需要检查type
类型的新片段被放置在哪里,因为游戏域的其余部分保持不变。在那里,您可以这样做:
/**
* Counts pieces of the given type, starting at (y, x),
* in the direction denoted by (dy, dx).
* Stops at field boundaries or when a different field type is encountered.
*/
int count(char type, int x, int y, int dx, int dy) {
int count = 0;
x += dx; // Skip the piece at (y, x) to avoid counting it twice
y += dy; // when looking in both directions on a line.
while (x >= 0 && x < 7 && y >= 0 && y < 6 && board[x][y] == type) {
count++;
x += dx; // Move in the direction denoted by (dy, dx)
y += dy;
}
return count;
}
/**
* Main entry point after a new piece of type `type` was added at (y, x).
* Returns true if this connects 4 or more in any direction.
*/
boolean check(char type, int x, int y) {
return count(type, x, y, -1, 0) + 1 + count(type, x, y, 1, 0) >= 4 // horizontal
|| count(type, x, y, 0, -1) + 1 + count(type, x, y, 0, 1) >= 4 // vertical
|| count(type, x, y, -1, -1) + 1 + count(type, x, y, 1, 1) >= 4 // diagonal
|| count(type, x, y, -1, 1) + 1 + count(type, x, y, 1, -1) >= 4);
}
dx和dy检查参数用于在不同方向上移动,而不对每个方向具有单独的方法。
在水平检查代码中,您可能会通过循环将1添加到x(保持y不变,即将0添加到y)来移动到下一个片段。在垂直检查代码中,通过将1添加到y(并将0添加到x)来移动到下一个片段。要向对角线移动,你需要在x和y坐标上都加1。
我有一个连接四个“板”,它是一个6*7的二维字符数组,填充了空格X或o。当在垂直、水平或对角线上有四个X或四个Os在一行中时,满足win条件。我已经成功地检查了垂直和水平的win条件,其中win字符通过如下所示的一些方法返回:
本文向大家介绍python中计算一个列表中连续相同的元素个数方法,包括了python中计算一个列表中连续相同的元素个数方法的使用技巧和注意事项,需要的朋友参考一下 最简单的例子: 很明显,答案是4 如果用代码实现,最先想到的就是itertools: 但是如果不想用itertools呢? 可以尝试以下的办法,效率还比itertools高一个数量级! 以上这篇python中计算一个列表中连续相同的元素
问题内容: 目前,我正在开发在8x8 2D阵列板上生成随机0和1的程序。我要做的是检查对角线上的所有数字是否都相同(从角开始,而不仅仅是对角线)。 例: 因此,如果偶然从左上角(0,0),(1,1)…(7,7)开始的所有数字均为0或1,那么我必须输出到扫描仪,指示“是0“的主要对角线(来自上面的示例)。 同样从该示例中,我们可以看到从右上角向左下角对角重复数字“ 1”,然后我还必须显示“有一个较小
对于每个查询,它都在n^2中运行。最大数组大小为8*10^3,最大查询数为10^5
问题陈述 任务是检查在长度为N的数组中是否存在K个元素的非连续子数组,其总和等于给定的总和。 例如, 长度为 3 且 sum=7 的非连续子数组为 [1,2,4]。 限制条件: 输出 如果存在 sum=TargetSum 的子数组,我们必须返回 True,如果不可能,则必须返回 False。
使用Java*** 我开始创建一个可以找到最小元素的程序。但我现在有个错误。我只懂Python,对Java非常陌生。请帮我修改代码。