我被赋予了一项任务,需要使用n和k来计算出n选择k问题。
我的条件是我不能使用int
以外的其他数据类型。
我无法使用BigInteger
等包
int n
和k
可以是200以下的任何数字。
如何避免数量增长过大?因为程序会在n > 20
时爆炸
感谢。
答案 0 :(得分:3)
使用递归关系:(n,k)=(n-1,k-1)+(n-1,k)
基本情况:(n,0)= 1; (0,k)= 0
答案 1 :(得分:1)
我认为这个问题要求你创建自己的数据结构,可以容纳大量的数据,或者代表巨大的数字。一旦完成,其余的都是微不足道的。您可能需要查看BigInteger的源代码,看看他们是如何做到的。