动态规划

来源:互联网 发布:linux 终端关闭全屏 编辑:程序博客网 时间:2024/05/22 13:27

今天看了动态规划,能解决递归的重复计算子结构的结果的情况,比如在斐波那契数列中,若用递归求解

F(5) = F(4) + F(3)  ,F(4 ) = F(3) + F(2);这种递归调用会重复计算F(3)。

1.求二项式系数

#include <iostream>#include <algorithm>using namespace std;//求二项式系数C(n,k),n、k都为非负整数int Binomial(int n ,int k){int ** binomial = (int**) new int[n + 1];for(int i = 0; i < n + 1; i++)binomial[i] = new int[k + 1];for(int i = 0; i < n + 1; i++)for(int j = 0; j < k + 1; j++)binomial[i][j] = 0;int result = 0;for(int i = 0; i <= n ; i++){for(int j = 0 ; j <= min(i,k); j++){if(j == 0 || j == i) binomial[i][j] = 1;elsebinomial[i][j] = binomial[i - 1][j] + binomial[i - 1][j - 1];cout<<binomial[i][j]<<'\t';}cout<<endl;}result = binomial[n][k];for(int i = 0; i < n + 1; i++)delete [] binomial[i];delete [] binomial;return  result;}int main(){int result = Binomial(8,6);cout<<result<<endl;return 0;}
2.求2个字符串不连续的最长公共字符串



0 0