我目前正在为游戏Hex编程AI。电路板由长度为121的数组表示。在蒙特卡罗树搜索的模拟阶段,我提取可能的移动。
我只是遍历数组并提取找到0值的索引。 (可能的值为1,-1,0)
std::vector<unsigned char>moveListe;
moveListe.reserve(121 - board->moveCount);
for (unsigned char i = 0; i<121; i++) {
if (board->board[i] != EMPTY) {
continue;
}
moveListe.push_back(i);
}
有什么方法可以加快速度吗?
答案 0 :(得分:0)
没有解决方案从STL向量或长度为n的简单数组中提取零值的所有位置,其时间小于O(n)。算法的这一部分应该是高效的。