动态规划详解:C++代码示例解析斐波那契数列
动态规划(Dynamic Programming,简称DP)是一种通过将问题拆解为子问题并存储子问题的解来解决复杂问题的方法。它通常适用于具有重叠子问题和最优子结构性质的问题。\n\n下面是一个使用动态规划解决斐波那契数列问题的示例C++源代码:\n\ncpp\n#include <iostream>\n#include <vector>\n\nint fibonacci(int n) {\n std::vector<int> dp(n + 1); // 创建一个大小为n+1的数组来存储子问题的解\n\n // 初始化斐波那契数列的前两个数\n dp[0] = 0;\n dp[1] = 1;\n\n // 递推计算斐波那契数列的每个数\n for (int i = 2; i <= n; i++) {\n dp[i] = dp[i - 1] + dp[i - 2];\n }\n\n return dp[n];\n}\n\nint main() {\n int n = 10; // 求斐波那契数列的第10个数\n int result = fibonacci(n);\n std::cout << "The " << n << "th Fibonacci number is: " << result << std::endl;\n\n return 0;\n}\n\n\n在这个示例中,我们使用动态规划的方法求解斐波那契数列的第n个数。我们创建了一个大小为n+1的数组dp,用来存储子问题的解。然后,我们初始化斐波那契数列的前两个数为0和1。接下来,我们使用循环计算斐波那契数列的每个数,将计算结果存储在dp数组中。最后,我们返回dp[n]作为结果。\n\n运行这段代码,将输出斐波那契数列的第10个数为55。
原文地址: https://www.cveoy.top/t/topic/pKUJ 著作权归作者所有。请勿转载和采集!