在边长为l的正方形中尽可能放入多的长a,宽b的小箱子,只考虑二维平面。 clc; close all; clear; a=input('箱子长度a='); b=input('箱子宽度b='); l=input('底板边长l='); i=1; [f(i),m(i),n(i)]=msy(a,b,l); c=min(a*m(i),b*n(i)); while (l-2*c)>=a i=i+1; [f(i),m(i),n(i)]=msy(a,b,l-2*c); c=c+min(a*m(i),b*n(i)); end m,n sum1 =sum(m.*n) sum=4*sum1(1,1); //msy.m function [fmax,x1,x2]=msy(a,b,l) m1=fix(l/a);n1=fix(l/b);fmax=0; for i=0:m1 for j=0:n1 f=a*i+b*j; if f>fmax&&f<=l fmax=f; x1=i; x2=j; end end end |
1 条回复