P181锁具装箱某厂生产一种弹子锁具,每个锁具有n个槽,每个槽的高度从{1,2,3,4}这4个数(单位略)中任取一个,限制至少有一个相邻的槽高之差等于3,且至少有3个不同的槽高,每个槽的高度取遍这4个数且满足上面这两个限制时生产出一批锁(例如,当n等于3时,3个槽高为1,4,2的锁符合要求,而3个槽高为1,4,4的锁不满足要求)。求一批锁的把数。解:取不同的n的值,通过matlab编程,求出对应的锁的把数当n=3时:源程序:s=0;n=3;forj1=1:n+1forj2=1:n+1forj3=1:n+1a1=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)]');ifnumbers>==3s=s+1;endendendendends输出结果:s=8所以当每个锁具有3个槽时,满足要求的这批锁的把数为8把。(2)当n=4时:源程序:s=0;n=3;forj1=1:n+1forj2=1:n+1forj3=1:n+1forj4=1:n+1a1=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)]');ifnumbers>==3s=s+1;endendendendendends输出结果:s=64所以当每个锁具有4个槽时,满足要求的这批锁的把数为64把。(3)当n=5时:源程序:s=0;n=3;forj1=1:n+1forj2=1:n+1forj3=1:n+1forj4=1:n+1forj5=1:n+1a1=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)]');ifnumbers>==3s=s+1;endendendendendendends输出结果:s=360所以当每个锁具有5个槽时,满足要求的这批锁的把数为360把。(4)当n=6时:源程序:s=0;n=3;forj1=1:n+1forj2=1:n+1forj3=1:n+1forj4=1:n+1forj5=1:n+1forj6=1:n+1a1=j1;a2
数学建模之锁具装箱问题 来自淘豆网www.taodocs.com转载请标明出处.