我正在用一个圆形罗宾来安排比赛。我希望每支球队都能打"n“游戏,我也有"x”队。如果"x“是偶数的话,一切都很好,但是如果"x”是奇怪的,我必须增加另一个团队,“拜”才能让它开始工作。
当我有11支球队每场打4场比赛的时候,这样就能让4支球队获得胜利。这是低效的,因为他们可以只打对方,让每支球队打4场比赛。
在安排了所有的比赛,包括一支球队“拜拜”的比赛之后,我试着让所有有“拜拜一周”的球队互相对抗。我需要确保球队以前没有打过比赛。
因为我使用的是少数的团队,我只是使用随机化来尝试组合,直到其中一个工作。但是,我不能让它起作用。
这是我的代码,它安排了各队之间的轮回比赛。我想通过和检查,看看他们是否曾经玩过,如果他们有,随机列表,以便我们可以尝试不同的组合。我不认为检查到目前为止这几支球队是否踢过比赛是有效的,因为即使球队有重叠,他们也不会洗牌。
while (true){
$needshuffled = "no";
for ($j=0; $j < $maxgames/2; $j++){
$k = $j*2;
$round[$maxgames][$j]["Home"]=$byeteams[$k];
$round[$maxgames][$j]["Away"]=$byeteams[$k+1];
$home = $round[$maxgames][$j]["Home"];
$away = $round[$maxgames][$j]["Away"];
$sql = "SELECT * FROM `temp`
WHERE (Home = '$home' and Away = '$away')
or (Home = '$away' and Away = '$home')";
if ($conn->query($sql) === TRUE) {
if ($result=mysqli_query($conn,$sql))
{
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
if ($rowcount > 0)
{
$needshuffled = "yes";
}
}
}
}
if ($needshuffled == "no"){
break;
}
}发布于 2016-09-02 16:25:15
如果您将if ($conn->query($sql) === TRUE)用于select语句,请参阅文档
失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。
因为您已经做了两次了,所以可以完成删除这一行,只需使用
$sql = "SELECT * FROM `temp`
WHERE (Home = '$home' and Away = '$away')
or (Home = '$away' and Away = '$home')";
if ($result=mysqli_query($conn,$sql)) {
...或者,由于变量$round中已经有完整的计划,所以可以使用它来检查现有的匹配项。
你可以尝试一种不同的策略:
对于数量不均衡、天数偶数的循环知更鸟,在未来的某一天,已经有拜拜的球队子集将与一支已经拜拜的球队进行对决,而所有还没有拜拜的球队要么在那天有拜拜,要么就会与一支还没有拜拜的球队比赛。
你所需要做的就是不断地生成圆周知了的桌子,直到你找到这一天,并使用当天的火柴。
https://stackoverflow.com/questions/39293517
复制相似问题