C 棒料切割问题递归自顶向下实现中的价格失配
我正在学习如何解决棒料切割利润最大化的问题。但是当我写这段代码时,它并没有产生一个激烈的结果。他给出的结果是20,但正确的结果是10 以下是代码:C 棒料切割问题递归自顶向下实现中的价格失配,c,dynamic-programming,C,Dynamic Programming,我正在学习如何解决棒料切割利润最大化的问题。但是当我写这段代码时,它并没有产生一个激烈的结果。他给出的结果是20,但正确的结果是10 以下是代码: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int _max(int a, int b) { if (a > b) return a; else return b; } int cut_rod(int prices[],
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int _max(int a, int b) { if (a > b) return a; else return b; }
int cut_rod(int prices[], int size)
{
if (size == 0) return size;
int max = 0;
for (int i = 1; i <= size; i++)
{
max = _max(max, prices[i] + cut_rod(prices, size - i));
}
return max;
}
int main(int argc, char** argv)
{
int arr[] = { 1,5,8,9};
int size = sizeof(arr) / sizeof(arr[0]);
int max = cut_rod(arr, size);
printf("Maximum Obtainable Value is %d", max);
getchar();
return 0;
}
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
int_max(inta,intb){if(a>b)返回a;else返回b;}
内部切割杆(内部价格[],内部尺寸)
{
如果(大小==0)返回大小;
int max=0;
对于(int i=1;i您可以访问
for (int i = 1; i <= size; i++)
{
max = _max(max, prices[i] + cut_rod(prices, size - i));
}
for(int i=1;i我能用它做些什么?@maylor我还没有看算法,所以有一个大胆的猜测:让循环条件i
而不是怎么可能?
for (int i = 0; i < size; i++)
{
max = _max(max, prices[i] + cut_rod(prices, size - i - 1));
}
for (int i = 0; i < size; i++)
{
max = _max(max, prices[i] + cut_rod(prices, size - i - 1));
}