作者bleed1979 (十三)
看板C_and_CPP
標題Re: [問題] 數字包數字問題
時間Sat Feb 26 08:58:06 2011
※ 引述《harristime (瀚宇)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Dev C++
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: 小弟想做一個題目,輸入任意數字後,會輸出像這樣
: EX: input 3
: 3 3 3 3 3
: 3 2 2 2 3
: 3 2 1 2 3
: 3 2 2 2 3
: 3 3 3 3 3
: 但在使用兩個for迴圈之後,開始用if else 去一一比對每個數值
: 還是想不到個好方法... 很希望能夠找出邏輯去解答
: 煩請各位高手指導一下
: 謝謝各位!!
如何在每個field都只尋訪一次。
將圖形十字切開。
Y
part 1 | part 2
---------+---------- X
part 3 | part 4
只需要做 part 1。
part 2 為對於 Y 的 part 1 的鏡射。
part 3 + part 4 為對於 X 的 part 1 + part 2 的鏡射。
part 1的做法:
3 向右延伸都是3
向
下
延 2 向右延伸都是2
伸 向
都 下
是 延
3 伸
都
是
2
同理如1,同理如N。
對於Y的鏡射:V[i][(n * 2 - 1) - j - 1] = V[i][j];
對於X的鏡射:V[(n * 2 - 1) - i - 1][j] = V[i][j];
解畢。
Bleed
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.113.80
推 ledia:for(i=0~2*n-1) for(j=0~2*n-1) 02/26 18:25
→ ledia: print 1+max(i-n,j-n,n-i,n-j) 02/26 18:25