題目連結:
題目包含多組測試資料。每一組測試資料的第一列有一正整數 N ,代表接下來有 N 列輸入。當 N = 0 時,停止程式,不對此筆輸入作處理。
每一列輸入包含兩個正整數 w 、 h ,代表一矩形紙張的寬度和長度。現在要從這 N 張紙裡,挑出可以裁切出最大的 4 個大小相同的正方形(從同一張紙上裁剪出 4 個正方形)。輸出它是第幾張紙。若有多種可能,輸出先出現的紙。
3
10 20
40 8
12 12
3
140 122
122 140
100 170
2
120 170
71 500
0
2
1
2
不難看出,要在一張長方形的紙上切出四個大小一樣且要盡量大的方法只有:
囗囗囗囗
或是
囗囗
囗囗
以上這兩種可能的切法。
而因為直接把長度或是寬度除以 4 (或是 2 ),會有浮點數誤差的問題。因此在寫比較的關關係式時要同乘以 4 (關係式的內容取決於現在紙張適合以上哪一種裁法)。
然後,一開始可能會有一個變數負責存切出來的正方形之邊長、一個變數存現在最好的那一張紙之編號,方便判斷。若新的紙切出來的正方形比先前的大,就更新為新的紙張。
最後,只要輸出儲存的編號即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。