【发布时间】:2014-05-06 21:02:07
【问题描述】:
我遇到了这个问题:
给定一个整数,仅使用 2,3,7 来确定可能的组合数,其总和将给出整数。
例如:
4 - 2 {(2,2)}
9 - 3 {(2, 7), (2, 2, 2, 3), (3, 3, 3)}
一种方法是遍历 3 个循环,然后确定总和是否可达到。代码如下:
for( i=0; i<=num/2; i++){
for( j=0; j<=num/3; j++){
for( k=0; k<=num/7; k++){
if(i*2+j*3+k*7 == num)
count++;
}
这里的 count 将有可能的集合数。但这是非常低效的并且需要 O(n3) 时间。我想知道是否有任何其他有效的方法来计算不同集合的数量。
【问题讨论】: