代码之家  ›  专栏  ›  技术社区  ›  Patrick195

C?的动态规划简单示例?[副本]

  •  -6
  • Patrick195  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   anupam691997    7 年前

    递归函数:-如果没有动态规划,它将多次调用同一函数。

     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数组来保存值,这样我就可以使用它们,而不是一次又一次地调用函数。我使用了动态规划概念。