切換
舊版
前往
大廳
主題

ZeroJudge - d040: 11207 - The easiest way 解題心得

Not In My Back Yard | 2018-12-18 20:48:50 | 巴幣 0 | 人氣 314

題目連結:


題目大意:
題目包含多組測試資料。每一組測試資料的第一列有一正整數 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 (關係式的內容取決於現在紙張適合以上哪一種裁法)。

然後,一開始可能會有一個變數負責存切出來的正方形之邊長、一個變數存現在最好的那一張紙之編號,方便判斷。若新的紙切出來的正方形比先前的大,就更新為新的紙張。

最後,只要輸出儲存的編號即可。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作