算法作业_33(2017.6.16第十七周)(算法机考模拟题1)

来源:互联网 发布:淘宝售前客服是做什么? 编辑:程序博客网 时间:2024/06/05 17:27

1000. 函数求值

Description

定义超级和函数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函数的代码. 注意不要修改类和函数的名称.
解析:dp问题

#include<iostream>#include<vector>using namespace std;class Solution {public:       int F(int k, int n) {                    if(k ==0) return n;             if(n == 0) return 0;             vector<vector<int>> dp (k+1,vector<int>(n+1));             for(int i = 0 ;i<=n ; i++){                 dp[0][i] = i ;             }             for(int i = 0 ;i<=k ; i++){                 dp[i][0] = 0 ;             }             for(int i = 1; i <= k ; i++){                 for(int j = 1 ; j <= n;j++){                     dp[i][j] = dp[i-1][j] +dp[i][j-1];                   }             }             return dp [k][n];       }                     };

原创粉丝点击