TOJ 110 六芒星的咒符參考解法

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

原始題目連結:TOJ 110 六芒星的咒符

此題要用 * 符號劃出六芒星,六芒星是由一個正三角形和一個倒三角形所組成的,中間有三行重疊,圖案如下圖


參考解法
因為此六芒星圖形是上下兩半對稱的,若以高度 height = 4 為例,可以將垂直軸轉換成 -k/2 到 k/2 值(下圖的 line 變數),而 k 值為六芒星行數。此時可以算出空白個數與星星個數(spaceAndStar)的總數為 2*height - 1,而空白數就是 line 變數的絕對值再加1,星星數為spaceAndStar - 2 * space。




用 height = 5 與 height = 6 來測試一下



以上的數學推導似乎可行,來寫程式吧。

C++程式碼:




結果





沒有留言: