周三0人,周四6人,周五3人,周六3人,周日0人。十、填数问题分别把12…16填到图示的16个圈内,使得每个三角形上的所有圈内的数的和为81(共
f4
个
三
角
形
)
。
决策变量e_ij1第i个圈填数a_je_ij0第i个圈不填数a_j。a_jjj12316。模型:
fmodelsets
umber116ali
k
umber
umberetri1
umber123456789tri2
umber12341615121110tri3
umber45671413121516tri4
umber78911011121314e
dsetsdataa12345678910111213141516e
ddataobjmaxsumli
kijeijajfor
umberisumli
kijeij1for
umberjsumli
kijeij1forli
kijbi
eij
fsum
umberjsumtri1ieijaj81sum
umberjsumtri2ieijaj81sum
umberjsumtri3ieijaj81sum
umberjsumtri4ieijaj81sumli
kijeijaj136e
d红色的那句程序可以去掉,也可以为:mi
sumli
kijeijaj,但求的结果不同,结果都符合要求。编号116的圆圈的填数结果至少有3种:(1)12111107814135941626153(2)14351587134126111092161(3)14114159813251631012617为了求得更多的解,可以约束编号116的圆圈的填数结果不为以上3种结果。modelsets
umber116ali
k
umber
umberetri1
umber123456789tri2
umber12341615121110tri3
umber45671413121516tri4
umber78911011121314yueshu1c1yueshu2c2yueshu3c3e
dsetsdataa12345678910111213141516c112111107814135941626153c214351587134126111092161c314114159813251631012617e
ddataobjmi
sum
umberisum
umberjeijajfor
umberisum
umberjeij1for
umberjsumli
kijeij1forli
kijbi
eijsum
umberjsumtri1ieijaj81sum
umberjsumtri2ieijaj81sum
umberjsumtri3ieijaj81sum
umberjsumtri4ieijaj81sumli
kijeijaj136sumyueshu1jsumli
kijeij16sumyueshu2jsumli
kijeij16sumyueshu3jsumli
kijeij16e
d
f解得:(4)12151110381615471491326可以继续下去:十一、数独求解在琳琅在线数独随机截取一至尊级题目如下:
用Li
go求解这道题。
fLi
go代码:modelsetsrow19col19
um19varrowcol
umxe
dsetsforcoljfor
umksumvarijkx1约束每一列填的数字不重复forrowifor
umksumvarijkx1约束每一行填的数字不重复
fforrowiforcoljsumvarijkx1约束每一个格子必须填入数字约束9个块里的数字不重复for
umksur