【发布时间】:2020-09-03 23:04:10
【问题描述】:
我正在学习如何解决切割棒的最大利润问题。但是当我编写这段代码时,它并没有产生什么剧烈的结果。他给出的结果是 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[], 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;
}
这段代码有什么问题?
【问题讨论】:
标签: c dynamic-programming