数学建模之锁具装箱问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P181 锁具装箱

1.某厂生产一种弹子锁具,每个锁具有n个槽,每个槽的高度从{1,2,3,4}这4个数(单

位略)中任取一个,限制至少有一个相邻的槽高之差等于3,且至少有3个不同的槽高,每个槽的高度取遍这4个数且满足上面这两个限制时生产出一批锁(例如,当n等于3时,3个槽高为1,4,2的锁符合要求,而3个槽高为1,4,4的锁不满足要求)。求一批锁的把数。

解:取不同的n的值,通过matlab编程,求出对应的锁的把数

(1)当n=3时:

源程序:

s=0;n=3;

for j1=1:n+1

for j2=1:n+1

for j3=1:n+1

a1=j1;a2=j2;a3=j3;

amax=max([a1,a2,a3]');

amin=min([a1,a2,a3]');

numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin);

neighbors=max([abs(a1-a2),abs(a2-a3)]');

if numbers>0.5

if neighbors==3

s=s+1;

end

end

end

end

end

s

输出结果:

s =8

所以当每个锁具有3个槽时,满足要求的这批锁的把数为8把。

(2)当n=4时:

源程序:

s=0;n=3;

for j1=1:n+1

for j2=1:n+1

for j3=1:n+1

for j4=1:n+1

a1=j1;a2=j2;a3=j3;a4=j4;

amax=max([a1,a2,a3,a4]');

amin=min([a1,a2,a3,a4]');

numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+( amax-a4)*(a4-amin);

neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4)]');

if numbers>0.5

if neighbors==3

s=s+1;

end

end

end

end

end

end

s

输出结果:

s =64

所以当每个锁具有4个槽时,满足要求的这批锁的把数为64把。

(3)当n=5时:

源程序:

s=0;n=3;

for j1=1:n+1

for j2=1:n+1

for j3=1:n+1

for j4=1:n+1

for j5=1:n+1

a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;

amax=max([a1,a2,a3,a4,a5]');

amin=min([a1,a2,a3,a4,a5]');

numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+( amax-a4)*(a4-amin)+(amax-a5)*(a5-amin);

neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5)]');

if numbers>0.5

if neighbors==3

s=s+1;

end

end

end

end

end

end

end

s

输出结果:

s =360

所以当每个锁具有5个槽时,满足要求的这批锁的把数为360把。

(4)当n=6时:

源程序:

s=0;n=3;

for j1=1:n+1

for j2=1:n+1

for j3=1:n+1

for j4=1:n+1

for j5=1:n+1

for j6=1:n+1

a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;

amax=max([a1,a2,a3,a4,a5,a6]');

amin=min([a1,a2,a3,a4,a5,a6]');

numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+( amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-amin);

neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6) ]');

if numbers>0.5

if neighbors==3

s=s+1;

end

end

end

end

end

end

end

end

s

输出结果:

s =1776

所以当每个锁具有6个槽时,满足要求的这批锁的把数为1776把。

(5)当n=7时:

源程序:

s=0;n=3;

for j1=1:n+1

for j2=1:n+1

for j3=1:n+1

for j4=1:n+1

for j5=1:n+1

for j6=1:n+1

for j7=1:n+1

a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;a7=j7;

amax=max([a1,a2,a3,a4,a5,a6,a7,]');

amin=min([a1,a2,a3,a4,a5,a6,a7]');

numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+( amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-amin)+(amax-a7)* (a7-amin);

相关文档
最新文档