【发布时间】:2011-07-11 15:58:59
【问题描述】:
在第2.2节中,一个叫做“子集和”的问题要求你计算一个从1到n的整数集有多少种方式可以划分为两个总和相同的集。
我知道复发是:
f[i][j] : j 与 1...i 相加的方式数
f[i][j]=f[i-1][j]+f[i-1][j-i]
如果初始条件是:
f[1][1]=1;//其他都为零,主循环从2开始
或者:
f[0][0]=1;//其他都为零,主循环从1开始
答案都是f[n][n*(n+1)/4]。这是否意味着初始条件不影响答案?
但是如果我使用一维数组,比如 f[N]:
设 f[0]=1,从 1 开始循环(所以 f[0] 实际上是 f[0][0]),答案是 f[n]/2
或者f[1]=1,从2循环(f[1]是f[1][1]),答案是f[n]
我很困惑……
【问题讨论】: