我想编写一个只使用挑战者数量随机生成锦标赛树的程序。我读到了另一个这样的问题,但答案描述了排名如何参与和播种球员,这有点过头了。
我面临的问题是我的算法产生一个无限循环,包括1到4之间的值。否则,对于所有值,程序将根据需要运行。
我的方法是为竞争对手的名字提供一系列字符串。然后,我会迭代每个位置并随机选择一个竞争对手的名字来获取该位置。因为我交换名称,我必须检查数组中的重复项。我相信这是我的代码遇到问题的地方。
以下是实际确定树的片段
for(int i = 0; i < no_players;) {
int index = rand() % ((no_players - i) + i);
// randomly choose an element from the remainder
string temp = players[index];
bool unique = true;
// check all the elements before the current position
for(int j = 0; j < i; j++) {
// if the element is already there, it is not unique
if(players[j] == temp)
unique = false;
}
// only if the element is unique, perform the swap
if(unique) {
players[index] = players[i];
players[i] = temp;
i++;
}
}
非常感谢任何帮助!