本题大意:农夫有n块钱,有k中工具,每种1到k块钱,问农夫有多少种工具买法。
本题可以通过背包来解决,f[i]表示i块钱时工具买法,递推至n即可,不过最后的答案超了long long,所以我用Java写的,算是熟悉一下刚学的语言吧。
import java.math.BigInteger;
import java.util.Scanner;
import java.util.Stack;
import java.lang.String;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int n,k;
n=cin.nextInt();
k=cin.nextInt();
BigInteger [] f=new BigInteger[1005];
for(int i=0;i<=n;i++)f[i]=BigInteger.ZERO;//初始化
f[0]=BigInteger.ONE;
for(int i=1;i<=k;i++)
for(int j=i;j<=n;j++)
f[j] = f[j].add(f[j-i]);
System.out.println(f[n]);
}
}