【发布时间】:2018-08-01 01:06:05
【问题描述】:
我有这个功能
public int numberOfPossiblePairs(int n)
{
int k=2;
if (k>n-k) { k=n-k;}
int b=1;
for (int i=1, m=n; i<=k; i++, m--)
b=b*m/i;
return b;
}
它会从给定数量的项目中获取您可以制作的配对数量,例如,如果您有一个包含 1000 件商品的数组,您可以制作 499,500 对。但我真正需要的是相反的。换句话说,一个函数将 499500 作为参数,并返回 1000 作为可以产生那么多对的唯一项目的原始数量。 (如果它还可以处理不完美的数字,例如 499501,这将是一个奖励,其中没有多少独特的项目可以产生那么多独特的配对,但它仍然会返回 1000 作为最接近的数字,因为它产生了 499500 配对。)
我意识到我可以逐步循环 numberOfPossiblePairs() 直到我看到我正在寻找的数字,但似乎应该有一种算法方法来做到这一点,而不是像那样强制它。
【问题讨论】:
标签: combinations