算法分析
时间复杂度 $O(n^2)$
参考文献
算法提高课
Java 代码
import java.util.Scanner;
public class Main {
static int[] v = new int[] {0,10,20,50,100};
static int[] f = new int[1010];
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
f[0] = 1;
for(int i = 1;i <= 4;i++)
{
for(int j = v[i];j <= n;j ++)
{
f[j] = f[j] + f[j - v[i]];
}
}
System.out.println(f[n]);
}
}
请问为什么f[0] = 1呢
因为一本都不买也是一种方案
谢谢解答~现在我的理解是,初始化f[0]的数值,方便后续f的迭代。
也是对的
我在这里补充优化之后的代码
这题中的n必须要全部花完才能算一种方案吗?样例2中的15我觉得应该输出1啊(买一本10元的)
必须把所有钱全部花完才算一种方案,样例
2
中的15
,只能买10
块钱的书,还剩下5
块,没得花完,因此不符合,所有输出0