[sicily] 1000.函数求值

来源:互联网 发布:五线谱打谱软件mac 编辑:程序博客网 时间:2024/05/17 03:27

声明:原题目转载自中山大学sicily平台,解答部分为原创

Problem :

 定义超级和函数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:
 思路:简单动态规划题,根据定义得出状态转换方程 F(k, n)= F(k - 1, n)+ F(k, n - 1)
 代码如下:
class Solution {public:       int F(int k, int n) {             vector<vector<int> > num(k + 1, vector<int>(n + 1));             for(int i = 0; i <= k; i ++)             {                for(int j = 1; j <= n; j ++)                {                    if(i == 0)                        num[i][j] = j;                    else                    {                        num[i][j] = num[i][j - 1] + num[i - 1][j];                    }                }             }             return num[k][n];       }};                                 
原创粉丝点击