动态编程C的简单示例?

时间:2017-11-19 11:56:02

标签: c algorithm dynamic-programming

我需要一些关于语言C的动态编程的例子。 我现在正在用C学习算法,但在本书中,例子太难理解了。 有人给我一些例子吗?

1 个答案:

答案 0 :(得分:0)

递归函数: - 没有动态编程,它将多次调用相同的函数。

 int nCr(int n,int r){
     if (r == 0 || r == n || n == 1 || n == 0){
        return 1;
 }
 else{
    return nCr(n-1,r) + nCr(n-1,r-1);
 }
}

现在借助动态编程:

#include <stdio.h>

int main(void) {

    int n,r;
    scanf("%d%d",&n,&r);

    int mem[n+1][r+1];

    int i,j;

    for(i=0;i<n+1;i++)
    {
        for(j=0;j<r+1;j++)
        {
            if (j == 0 || j == i || i == 1 || i == 0)
                mem[i][j]=1;
            else
                mem[i][j]=mem[i-1][j]+mem[i-1][j-1];
        }
    }

    printf("%d",mem[n][r]);


    return 0;
}

我使用2D数组来保存值,以便我可以使用它们而不是一次又一次地调用函数。我使用了动态编程概念。