在制作比赛树的选择性无限循环

时间:2014-11-29 04:04:35

标签: c++ arrays duplicates infinite-loop swap

我想编写一个只使用挑战者数量随机生成锦标赛树的程序。我读到了另一个这样的问题,但答案描述了排名如何参与和播种球员,这有点过头了。

我面临的问题是我的算法产生一个无限循环,包括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++;
    }
}

非常感谢任何帮助!

0 个答案:

没有答案