钢条切割

钢条切割

这道题只是我刚开始学习线性规划的自己的根据大致做法自己写的代码。作为笔记记录一下,未必是简便的程序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;
void Print(int x[],int n){
	int t;
	if(x[2*n]==0)	cout<<n<<" ";
	else{
		t=x[2*n-1];
		Print(x,t);
		t=x[2*n];
		Print(x,t);
	} 
}
int main()
{
	int p[11]={0,1,5,8,9,10,17,17,20,24,30}; 
	int n,max=0;
	int r[1001]={-1};
	int x[2002]={0};
	cin>>n;
	for(int i=1;i<=n;i++){
		max=p[i];
		for(int j=1;j<i;j++){
			if(max < (r[j]+r[i-j])){
				max=r[j]+r[i-j];
				x[2*i-1]=j;
				x[2*i]=i-j;
			}
		}
		r[i]=max;
	}
	cout<<r[n]<<endl;
	Print(x,n);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43922742/article/details/88753059
今日推荐