我在医生诊间编程碰到个问题,每个草药各有几种规格,比如车前子3克装,5克装,7克装,我输入的数量必须在几个包装数的倍数,3*n+5*n+7*n,也就是3,5,7,3+5,3+3+5,3+5+7+7等等都通过,1,2,4等都不能通过,这样算法怎么写比较好
配药量为s
药的规格为n1,n2,n3
for i=0 to s/n1
for j=0 to (s-i*n1)/n2
if mod(s-i*n1-j*n2,n3)=0 then
messagebox(“”,“能分配”)
exit
end if
next
next
if i>s/n1 then
messagebox(“”,”不能分配”)
end if
这个效率高点
long i,j,k,z,m
long i1,j1,k1
i1=3
j1=5
k1=7
lb_1.reset()
m=long(sle_1.text)
for i = 0 to m / i1
for j = 0 to m / j1
z=i1 * i + j1 * j
if m >= z and mod(m - z,k1) = 0 then
lb_1.additem(string(i1)+*+string(i)+ + +string(j1)+ &
*+string(j)+ + +string(k1)+*+string((m - z) / k1)+=+string(m))
end if
next
next