gpt4 book ai didi

java - 检查两个二维 boolean 数组在给定间隔内是否相等 : Java

转载 作者:行者123 更新时间:2023-12-02 01:06:37 25 4
gpt4 key购买 nike

我有两个二维 boolean 数组,较小的数组(形状)将覆盖较大的数组(世界)。

我很难找到一种方法来确定较小的数组何时可以“适合”较大的数组。

当我运行代码时,它要么只是遍历更大的数组,从不停止,要么在一步后停止(错误地)。

public void solve() {
ArrayList<Boolean> worldList=new ArrayList<>();
ArrayList<Boolean> shapeList=new ArrayList<>();

for (int i = 0; i < world.length; i++) {
for (int k = 0; k < world[i].length; k++) {
worldList.add(world[i][k]);
display(i, k, Orientation.ROTATE_NONE);
for (int j = 0; j < shape.length; j++) {
for (int l = 0; l < shape[j].length; l++) {
shapeList.add(shape[j][l]);
if(shapeList.equals(worldList)) {
return;
}
}
}
}
}
}

最佳答案

解决此类问题的一个好方法是对最简单的情况进行暴力破解。因此,对于 world 列表中的每个索引,只需检查 worldshapes 的每个后续索引是否匹配。

请注意,我们仅迭代到 world.size()-shapes.size(),因为自然地,如果 shapesworld 的部分长code> 我们还没有检查过,它不适合。

import java.util.ArrayList;

public class Test {
ArrayList<Boolean> world = new ArrayList<>();
ArrayList<Boolean> shapes = new ArrayList<>();

public static void main(String[] args) {
new Work();
}

public Test() {
world.add(true);
world.add(false);
world.add(false);
world.add(true);

shapes.add(false);
shapes.add(true);

// Arraylists initialized to these values:
// world: T F F T
// shapes: F T

System.out.println(getFitIndex());
}

/**
* Get the index of the fit, -1 if it won't fit.
* @return
*/
public int getFitIndex() {
for (int w = 0; w <= world.size()-shapes.size(); w++) {
boolean fits = true;

for (int s = 0; s < shapes.size(); s++) {
System.out.println("Compare shapes[" + s + "] and world["+ (w+s) + "]: " +
shapes.get(s).equals(world.get(w+s)));

if (!shapes.get(s).equals(world.get(w+s))) fits = false;
}

System.out.println();

if (fits) return w;
}

return -1;
}
}

当我们运行此代码时,我们会在控制台上打印出值 2,因为 shapes 确实适合从 world[2] 开始的世界内部。

关于java - 检查两个二维 boolean 数组在给定间隔内是否相等 : Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59955949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com