Farklı boyutlarda küçük dikdörtgenler (1 cm x 2 xm, 2 cm x 3 cm, 4 cm * 6 cm vb.) Var. Farklı tipteki dikdörtgenlerin sayısı kutuya bağlı olarak değişebilir. Farklı dikdörtgenlerin her tipi farklı sayıda sayıma sahip olabilir.Minimum alan hesaplama algoritması (Yalnızca kenarlara fayans yerleştirin)
Bu küçük dikdörtgenlerin yalnızca kenarları üzerine yerleştirilebildiği tüm küçük dikdörtgenlerle büyük bir dikdörtgen oluşturmam gerekiyor. dönüş yok. Son dış dikdörtgen, ideal olarak kare bir şekle alıştırılmalıdır. X ~ Y. Tüm kenarların doldurulması gerekmemektedir. Küçük dikdörtgenler arasında boşluk olabilir. Resim Örneği:
http://i.stack.imgur.com/GqI5z.png
Oluşması mümkün olan en az alanı belirten bir kod yazmaya çalışıyorum.
Mümkün olan en az alanı bulmak için olası tüm yerleşimlerden geçen bir algoritma var. Ancak bu, farklı tipteki dikdörtgenlerin sayısı ve dikdörtgenlerin sayısı arttıkça uzun bir çalışma süresi alır. yani 2 tip dikdörtgen, her biri 100 + dikdörtgen içerir. Döngüler için 8. Bu, mümkün olan en az alanı hesaplamak için daha iyi ve daha hızlı algoritma hakkında herhangi bir fikir olacaktır? kod python'dadır, ancak herhangi bir algoritma kavramı iyidir.
for rectange_1_top_count in (range(0,all_rectangles[1]["count"]+1)):
for rectange_1_bottom_count in range(0,all_rectangles[1]["count"]-rectange_1_top_count+1):
for rectange_1_left_count in (range(0,all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count+1)):
for rectange_1_right_count in ([all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count-rectange_1_left_count]):
for rectange_2_top_count in (range(0,all_rectangles[2]["count"]+1)):
for rectange_2_bottom_count in (range(0,all_rectangles[2]["count"]-rectange_2_top_count+1)):
for rectange_2_left_count in (range(0,all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_top_count+1)):
for rectange_2_right_count in [(all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_left_count-rectange_2_top_count)]:
area=calculate_minimum_area()
if area< minimum_area:
minimum_area=area
Yani dış dikdörtgenin boyutu verilir ve ortadaki beyaz alanı en aza indirmek ister misiniz? –
Bunu zorlaştıran durum dikdörtgeni yalnızca kenarlara/kenarlara yerleştirilebilir. –
yığılmış olamaz Dış dikdörtgen boyutu verilmez. Sadece küçük dikdörtgenler verilir. Yerleşim değiştikçe, dış dikdörtgenin boyutu değişecektir. Ancak, en küçük dikdörtgen dış alanı sağlayacak kenardaki en uygun küçük dikdörtgen yerleşimini istiyorum. –