0

假设我有一张顺时针方向的桌子,如下所示:

   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.

如果我想要一个标准映射来做这件事,什么是一个好的算法?

4

1 回答 1

1

假设您有一个有序的座位结构,并做出一些假设,因为您的实施细节尚不清楚:

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 循环。

于 2012-06-18T00:49:19.650 回答