我有一个struct
包含几个int
和bool
成员的,我希望从列表中获得最低值(实际上是在制作一个基于 A* 搜索的路径查找器)。
基本上,我的对象如下所示:
public struct Tile
{
public int id;
public int x;
public int y;
public int cost;
public bool walkable;
public int distanceLeft;
public int parentid;
}
我想得到距离最小的项目。列表声明如下:
List<Structs.Tile> openList = new List<Structs.Tile>();
并以这种方式分配值:
while (pathFound == null)
{
foreach (Structs.Tile tile in map)
{
foreach (Structs.Tile tile1 in getSurroundingTiles(Current))
{
if (tile1.x == tile.x && tile1.y == tile.y)
{
Structs.Tile curTile = tile1;
curTile.parentid = Current.id;
curTile.distanceLeft = (Math.Abs(tile.x - goalx) + Math.Abs(tile.y - goaly));
if (curTile.distanceLeft == 0)
{
pathFound = true;
}
openList.Add(curTile);
}
}
}
foreach (Structs.Tile tile in openList)
{
}
}
如果我不得不猜测,我会说这要么非常困难,要么比我说的要复杂得多,或者非常简单,我只是感到困惑。
我确实考虑过滚动列表并将每个项目与其较低的对应项进行比较,但考虑到我们所处的时代,这似乎不合理,似乎会有更简单的方法。我不关心列表的顺序,因为我为每个项目分配了一个索引,我可以从中调用它。
提前致谢!