gpt4 book ai didi

c++ - 如何存储坐标以便与以后的坐标进行比较

转载 作者:行者123 更新时间:2023-11-28 07:09:53 27 4
gpt4 key购买 nike

这是作业。我有一个在网格中移动的机器人。我需要存储他访问过的每个坐标,然后检查他之前是否访问过它们。现在我将坐标存储在一个 Pair 中,但是我如何将 Pair 存储在一个列表/数组中,这样我就可以比较他以后访问的坐标,如果他以前没有去过那里,我可以将它添加到列表中?

这是我的代码。

#include <iostream>
#include <array>
#include <utility>
#include <list>



using namespace std;

void check (pair<int, int> foo)
{
int points[10000];

cout << "x " <<foo.first;
cout << "y "<< foo.second << endl;
}

int main()
{

int numberOfLines = 0;
string strDirection;
int counter = 0;
cin >> numberOfLines;

do
{
counter++;
int tempStrSize = 0;
int y = 0;
int x = 0;
int intDirection = 0;

cin >> strDirection;
tempStrSize = strDirection.size();
char direction[tempStrSize];
pair<int, int> foo;
for(int i = 0; i<tempStrSize; i++)
{
direction[i] = strDirection.at(i);
}
for (int i = 0; i < tempStrSize; i++)
{
if(direction[i] == 'h' || direction[i] == 'H')
{
if(intDirection == 3)
{
intDirection = 0;
}
else if(intDirection != 3)
{
intDirection++;
}
}
else if(direction[i] == 'v' || direction[i] == 'V')
{
if(intDirection == 0)
{
intDirection = 3;
}
else if(intDirection != 0)
{
intDirection--;
}
}
else if(direction[i] == 'f' || direction[i] == 'F')
{
if(intDirection == 0)
{
y++;
foo = make_pair(x,y);

}
if(intDirection == 1)
{
x++;
foo = make_pair(x,y);

}
if(intDirection == 2)
{
y--;
foo = make_pair(x,y);

}
if(intDirection == 3)
{
x--;
foo = make_pair(x,y);

}
}
check(foo);
}
cout << endl;
cout << x << " " << y << endl;

}
while(counter < numberOfLines);
return 0;
}

最佳答案

我会使用 Map 或 unordered_map:

#include <unordered_map>

unordered_map<pair<int, int>,bool> visitedPoints;

bool checkVisited(pair<int, int> &coords)
{
return visitedPoints.find(coords) != visitedPoints.end();
}

void addVisited(pair<int, int> &coords)
{
if(!checkVisited(coords)) visitedPoints[coords] = true;
}

只是为了检查该对是否在 map 中并保存访问过的点。

关于c++ - 如何存储坐标以便与以后的坐标进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183917/

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