假设我有一张顺时针方向的桌子,如下所示:
2
1 3
0
这在 4 人游戏中运行良好,但在 3 人游戏中,服务器看不到第四把椅子。因此,我必须将 3 个玩家(其中一个可能坐在座位 [3] 上)映射到由 3 个 [2] 元素组成的数组。
因此,如果玩家坐在 2、3、0 位置,则 2 映射到 0,3 映射到 1,0 映射到 2。如果座位是 1、3、0,它会映射 1 到 0、3 到 1,以及 0 到2.
如果我想要一个标准映射来做这件事,什么是一个好的算法?
假设我有一张顺时针方向的桌子,如下所示:
2
1 3
0
这在 4 人游戏中运行良好,但在 3 人游戏中,服务器看不到第四把椅子。因此,我必须将 3 个玩家(其中一个可能坐在座位 [3] 上)映射到由 3 个 [2] 元素组成的数组。
因此,如果玩家坐在 2、3、0 位置,则 2 映射到 0,3 映射到 1,0 映射到 2。如果座位是 1、3、0,它会映射 1 到 0、3 到 1,以及 0 到2.
如果我想要一个标准映射来做这件事,什么是一个好的算法?
假设您有一个有序的座位结构,并做出一些假设,因为您的实施细节尚不清楚:
std::map<int, int> clockwisePositionMap;
int counter = 0;
for (Seat s : seatList) {
if(s.isOccupied()) {
clockwisePositionMap.insert( pair<int, int>(seat.getNumber(), counter));
counter++;
}
}
请注意,这与您的任何一个示例都不匹配;它总是给予 0 第一优先级,但如果这是一个问题,您可以根据需要更改 for 循环。