c - C 动态编程简单示例?

标签 c algorithm dynamic-programming

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

最佳答案

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

 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;
}

我使用了二维数组来保存值,以便我可以使用它们而不是一次又一次地调用该函数。我使用了动态规划的概念。

关于c - C 动态编程简单示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376538/

相关文章:

java - UVa 10134:更智能吗? (动态编程和最长的递增子序列)

algorithm - 最有效的座位安排

c - 传递一个指向数组的指针

c - windows c 中的 sha-1 实现

algorithm - 这个算法的运行时间复杂度是多少

计算完全替代的密码排列

java - Shell 排序算法比归并排序算法有何优势?

c - 如何在 C 中写入二进制文件?

c - 在AVR汇编中,代码执行后寄存器r24的值是多少?

c - NetBSD 上的 libmagic 关闭文件描述符