这是给你CompSci或统计人员。如果该列表包含72,786和#34;东西,那么请告诉我," compareCount的值在循环结束时是什么?我认为它是72,786 ^ 2-1但是这个老脑子就像那样工作已经很久了。非常感谢你的时间和帮助!
List<thing> theList = new List<thing>();//list contains 73,786 "things"
private void compare()
{
int compareCount = 0;
for(int i = 0; i < theList.Count-1; i++)
{
for(int comp = i + 1; comp < theList.Count; comp++)
{
compare(theList[i], theList[comp]);
compareCount++;
}
}
}
答案 0 :(得分:3)
代码中的compareCount将具有值(72786^2 - 72786) / 2 = 2648864505
。我通过运行它确认了。正如现在所写的那样,内部循环中不需要调用compare(theList[i], theList[comp])
(因为它不会以任何方式影响计数)。
以下是我记得(n^2 - n)/2
公式的方法:与n
玩家进行的循环赛,每个玩家都会与其他所有玩家完成一次。
匹配计划是一个包含n
行和列(n * n = n^2
组合)的正方形。由于玩家不与自己对战,因此必须减去从左上角到右下角的对角线上的n
匹配(现在剩下n^2 - n
匹配)。在对角线上方的三角形中,玩家A
与玩家B
的配对与下方三角形中B
与A
的配对相同((n^2 - n)/2
这样的配对)。从n^2 - n
中减去此数字会得出(n^2 - n)/2
可能匹配的最终结果。