gpt4 book ai didi

java - 在数组列表中查找由 boolean 值定义的对象

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

我正在开发一个应该是迷宫求解器的项目。我的代码几乎完整,除了一点点。我需要获取数组列表中某个点的索引,但我有一个 boolean 值来调节我需要的点。我需要能够获得满足 boolean 值为 true 的点的索引,但我不太确定该怎么做。我附上了下面的一些代码。我希望这足以向您展示我的意思!

这是带有该点的条件的 boolean 值:

public static boolean adjacent( Point p1, Point p2 )
{
int pointX1 = p1.getX();
int pointX2 = p2.getX();
int pointY1 = p1.getY();
int pointY2 = p2.getY();

while (pointY1 == pointY2)
{
if(pointX1 + 1 == pointX2)
{
return true;
}
else if(pointX1 - 1 == pointX2)
{
return true;
}
}

while (pointX1 == pointX2)
{
if(pointY1 + 1 == pointY2)
{
return true;
}
else if(pointY1 - 1 == pointY2)
{
return true;
}
}

return false;

}

这是到目前为止我的数组列表:

public static boolean isSolvable( ArrayList<Point> points )
{
ArrayList<Point> second = new ArrayList<Point>();
second.add(points.get(0));
points.remove(0);


while(second.size() >= 1)
{

//if second contains adjacent point. (Add adjacent to array list, and subtract from other array list[point])
if(points.contains(adjacent(second.get(0), points.get(0))) == true)
{


}


}

return false;
}

最佳答案

据我所知,您的 adjacent(Point, Point) 方法存在一个主要问题。相反,使用 whiles (我不知道为什么你会在这里使用它们)将它们更改为 ifs:

if(pointY1 == pointY2)
{
if(pointX1 + 1 == pointX2
|| pointX1 - 1 == pointX2)
return true;
}

if(pointX1 == pointX2)
{
if(pointY1 + 1 == pointY2
|| pointY1 - 1 == pointY2)
return true;
}

编辑: 正如@Lars所说,您可以在单行函数中将其编写为:

return Math.abs(p1.getX() - p2.getX()) + Math.abs(p1.getY() - p2.getY()) == 1;

此外,我也会尝试回溯、贪婪算法,甚至分支定界算法来解决您的迷宫问题。

关于java - 在数组列表中查找由 boolean 值定义的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46484742/

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