定义超级和函数F如下:
F(0, n) = n,对于所有的正整数n..
F(k, n) = F(k – 1, 1) + F(k – 1, 2) + … + F(k – 1, n),对于所有的正整数k和n.
请实现下面Solution类中计算F(k, n)的函数(1 <= k, n <= 14).
class Solution {
public:
int F(int k, int n) {
}
};
例1:F(1, 3) = 6
例2:F(2, 3) = 10
例3:F(10, 10) = 167960
注意:你只需要提交Solution类的代码,你在本地可以编写main函数测试程序,但不需要提交main函数的代码. 注意不要修改类和函数的名称.
这道题拿到的第一反应还以为是要递归,后来发现是动态规划的题,代码如下:
#include<iostream>
#include<cstring>
using namespace std;
class Solution {
public:
int F(int k, int n) {
int array[15][15];
memset(array,0,sizeof(array));
for(int i = 1; i <= 14; i++){
array[0][i] = i;
}
for(int i = 1; i <= k; i++){
for(int j = 1; j<= n; j++){
array[i][j] = array[i-1][j] + array[i][j-1];
}
}
return array[k][n];
}
};