首页 > 分享 > 寻找最经济的木材切割方案

寻找最经济的木材切割方案

1829 切木头

最新推荐文章于 2023-10-30 18:07:48 发布

Felven 于 2011-08-12 08:15:47 发布

本文为博主原创文章,未经博主允许不得转载。

描述

人们需要把一跟很长的木头切成几段,有一家名为 Analog Cutting Machinery (ACM) 的公司正在经营这一业务。他们根据切割前木头的长度来收费,木头越长、收费越高,并且每切割一次就收一次费。

显而易见,在这里切割木头时,不同的切割顺序就会产生不同的价钱。譬如一跟 10 米长的木头,需要在 2、4、7 米处切开。如果顺序在这三个位置切割,需要的费用是 10 + 8 + 6 = 24,因为木头原始长度为 10 米,切掉两米剩 8 米,在四米处切掉剩 6 米。如果按照 4、2、7 的顺序来切割,花费就是 10 + 4 + 6 = 20。

任务

你的老板有很多木材要切割,现在他希望你能够帮他找到最便宜的切割方式。

输入

一次输入可能包含多组数据。每一组数据的第一行是木材的长度L (L<=1000),如果为 0 则表示输入结束。每组数据的第二行是要切割的次数 N (N<=50),第三行则是切割的位置Ci(0<Ci<L)。以上数据均为整数。

输出

针对每一组输入,输出切割这段木头的最小费用。

样例输入

100

3

20 50 75

10

4

4 5 7 8

0 样例输出

200

22

模拟题,动态规划

#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

int t,l,n;

while(scanf("%d",&l)!=EOF)

{

if(l==0)

break;

scanf("%d",&n);

int a[n+2];

a[0]=0;

for(int i=1;i<n+1;i++)

scanf("%d",&a[i]);

a[n+1]=l;

int m[n+2][n+2];

for( int w=0;w<=n+1;w++)

{ m[w][w]=0;

m[w][w+1]=0;

m[w][w+2]=a[w+2]-a[w];}

for(int l=3;l<=n+1;l++)

{

for(int i=0;i<=n-l+1;i++)

{ int j=i+l;

m[i][j]=999999999;

for(int k=i;k<=j-1;k++)

{

int q=m[i][k]+m[k][j]+a[j]-a[i];

if(q<=m[i][j])

{ m[i][j]=q;

}

}

}

}

printf("%dn",m[0][n+1]);

}

return 0;

}

相关知识

寻找最经济的木材切割方案
木材切割施工方案.docx
木材如何切割最直接
木材切割方法与流程
木材切割技术概述
木材的切割和加工工艺
木材切割方式
木材切割的三种常见方法
木材切割常见工艺技巧
激光切割木材时如何防止燃烧?

网址: 寻找最经济的木材切割方案 https://m.huajiangbk.com/newsview2017237.html

所属分类:花卉
上一篇: 电脑裁板锯:板材加工的效率引擎电
下一篇: 六种用于分割和切割木材的工具让你