剪绳子问题代码(动态规划问题)

问题描述:给出一个长度为n的绳子,随便怎么剪,求如何操作使得剪出每段绳子的长度乘积能达到最大?

#include <iostream>
using namespace std;
int maxproduct(int length)
{
	int *product=new int[length+1];
	if(length<2) return 0;
	if(length==2)return 1;
	if(length==3)return 2;
	product[0]=0;
	product[1]=1;
	product[2]=2;
	product[3]=3;
	int max=0;
	for(int i=4;i<=length;i++)
	{
		for(int j=1;j<=i/2;i++)
		{
			int temp=product[j]*product[i-j];
			if(max<temp)
			{
				max=temp;
			}
		    product[i]=temp;
		}
	}
	max=product[length];
	delete []product;
	return max;
}
int main()
{
	int n=maxproduct(6);
	cout<<n;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/jacoob1024/article/details/79940494