1、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+1for j2=1:n+1for j3=1:n+1a1=j1;a2=
2、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 numbers0.5if neighbors=3s=s+1;endend endendends输出结果:s =8所以当每个锁具有 3 个槽时,满足要求的这批锁的把数为 8 把。(2)当 n=4 时:源程序:s=0;n=3;for j1=1:n+1for j2=1:n+1for j3=1:n+
3、1for 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 numbers0.5if neighbors=3s=s+1;endendendendendends输出结果:s =64所以当每个锁具有 4 个槽时,满足要求的这
4、批锁的把数为 64 把。(3)当 n=5 时:源程序:s=0;n=3;for j1=1:n+1for j2=1:n+1for j3=1:n+1for j4=1:n+1for 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(ab
5、s(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5);if numbers0.5if neighbors=3s=s+1;endendendendendendends输出结果:s =360所以当每个锁具有 5 个槽时,满足要求的这批锁的把数为 360 把。(4)当 n=6 时:源程序:s=0;n=3;for j1=1:n+1for j2=1:n+1for j3=1:n+1for j4=1:n+1for j5=1:n+1 for j6=1:n+1a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;amax=max(a1,a2,a3,a4,a5,a6
6、);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 numbers0.5if neighbors=3s=s+1;endendendendendendendends输出结果:s =1776所以当
7、每个锁具有 6 个槽时,满足要求的这批锁的把数为 1776 把。(5)当n=7 时:源程序:s=0;n=3;for j1=1:n+1for j2=1:n+1for j3=1:n+1for j4=1:n+1for j5=1:n+1 for j6=1:n+1for j7=1:n+1a1=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
8、)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-amin)+(amax-a7)*(a7-amin);neighbors=max(abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6),abs(a6-a7);if numbers0.5if neighbors=3s=s+1;endendendendendend endendends输出结果:s =8216所以当每个锁具有 7 个槽时,满足要求的这批锁的把数为 8216 把。(6)当 n=8 时:源程序:s=0;
9、n=3;for j1=1:n+1for j2=1:n+1for j3=1:n+1for j4=1:n+1for j5=1:n+1 for j6=1:n+1for j7=1:n+1for j8=1:n+1a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;a7=j7;a8=j8;amax=max(a1,a2,a3,a4,a5,a6,a7,a8);amin=min(a1,a2,a3,a4,a5,a6,a7,a8);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)+(amax-a8)*(a8-amin);neighbors=max(abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6),abs(a6-a7),abs(a7-a8);if numbers0.5if neighbors=3s=s+1;endendendendendendendendendends输出结果:s =36640所以当每个锁具有 8 个槽时,满足要求的这批锁的把数为 36640 把。