è¦ç´ ãŒ1ã¨0ã‹ã‚‰ãªã‚‹n×nã®è¡Œåˆ—ã«å¯¾ã—ã¦ã€ä»¥ä¸‹ã®ç¨®é¡žã®æ“作を行ã†ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆã€‚
部分行列ã¨è§’度(0,90,180,270,360)ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã®ã§ãã®åˆ†ã ã‘時計回りã«å›žè»¢ã•ã›ã‚‹ã€‚
部分行列ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã®ã§å€¤ã‚’å転ã•ã›ã‚‹ã€‚
è¡ŒãŒä¸Žãˆã‚‰ã‚Œã‚‹ã®ã§å·¦ã«1個シフトã—ã€ã¯ã¿å‡ºãŸåˆ†ã¯å³ç«¯ã«ç§»å‹•ã™ã‚‹ã€‚
è¡ŒãŒä¸Žãˆã‚‰ã‚Œã‚‹ã®ã§å³ã«ï¼‘個シフトã—ã€ã¯ã¿å‡ºãŸåˆ†ã¯å·¦ç«¯ã«ç§»å‹•ã™ã‚‹ã€‚
è¡Œ(r),列(c)ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
Step1:ç¾åœ¨ã®ã‚»ãƒ«ã‚’(r,c)ã«ã™ã‚‹ã€‚
Step2:ç¾åœ¨ã®ã‚»ãƒ«ã®å€¤ã‚’å転ã™ã‚‹ã€‚
Step3:隣接ã™ã‚‹ã‚»ãƒ«ã®ã†ã¡ã€å€¤ãŒç¾åœ¨ã®ã‚»ãƒ«ã®å転å‰ã®å€¤ã¨ç‰ã—ã„セルã«å¯¾ã—ã€Step2ã¨Step3ã®å‡¦ç†ã‚’è¡Œã†ã€‚
ã“ã“ã§ã€ã‚»ãƒ«(i,j)ã«éš£æŽ¥ã™ã‚‹ã‚»ãƒ«ã¨ã¯ã€(i-1,j),
(i+1,j),(i,j-1),(i,j+1)ã®ï¼”ã¤ã§ã‚る。
n m a1,1 a1,2 ... a1,n a2,1 a2,2 ... a2,n : an,1 an,2 ... an,n Operation1 Operation2 : Operationm
入力ã®æœ€åˆã«2ã¤ã®æ•´æ•°nã¨mãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ nã¯è¡Œåˆ—ã®ã‚µã‚¤ã‚ºã€mã¯æ“作ã®æ•°ã‚’表ã—ã¦ã„る。
次ã«ã‚°ãƒªãƒƒãƒ‰ã®æƒ…å ±ãŒnè¡Œã§ä¸Žãˆã‚‰ã‚Œã€ã‚°ãƒªãƒƒãƒ‰ã®æƒ…å ±ã®i行目ã«ã¯n個ã®æ•´æ•° ai,jãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ai,jã«ã¯0ã‹1ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
次ã«1è¡Œã§è¡¨ã•ã‚Œã‚‹å„OperationiãŒm個与ãˆã‚‰ã‚Œã‚‹ã€‚ Operationi ã®æœ€åˆã®å…¥åŠ›ã¯o(æ“作ã®ç¨®é¡ž)ãŒå…¥åŠ›ã•ã‚Œã‚‹ã€‚
oãŒ0ã®ã¨ãã¯å›žè»¢(Rotate)を表ã—ã¦ã„る。 続ã入力ã¯ã€r c size angle(è¡Œã€åˆ—ã€ã‚µã‚¤ã‚ºã€è§’度) ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ 左上(r,c)ã‹ã‚‰å³ä¸‹(r+size-1,c+size-1)ãŒéƒ¨åˆ†è¡Œåˆ—ã¨ãªã‚‹ã€‚ æ£æ–¹è¡Œåˆ—ã«ãªã‚‹ã“ã¨ã¯ä¿è¨¼ã•ã‚Œã¦ã„る。
oãŒ1ã®ã¨ãã¯å転(Reversal)を表ã—ã¦ã„る。 ã¾ãŸã€ç¶šã入力ã¯ã€r c size (è¡Œã€åˆ—ã€ã‚µã‚¤ã‚º) ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ 左上(r,c)ã‹ã‚‰å³ä¸‹(r+size-1,c+size-1)ãŒéƒ¨åˆ†è¡Œåˆ—ã¨ãªã‚‹ã€‚ æ£æ–¹è¡Œåˆ—ã«ãªã‚‹ã“ã¨ã¯ä¿è¨¼ã•ã‚Œã¦ã„る。
oãŒ2ã®ã¨ãã¯å·¦ã‚·ãƒ•ãƒˆ(Left shift)を表ã—ã¦ã„る。 ã¾ãŸã€ç¶šã入力㯠r(è¡Œ) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
oãŒ3ã®ã¨ãã¯å³ã‚·ãƒ•ãƒˆ(Right shift)を表ã—ã¦ã„る。 ã¾ãŸã€ç¶šã入力㯠r(è¡Œ) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
oãŒ4ã®ã¨ãã¯å³¶å転(Island reversal)を表ã—ã¦ã„る。 ã¾ãŸã€ç¶šã入力㯠r c(è¡Œã€åˆ—) ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
入力ã¯ä»¥ä¸‹ã®æ¡ä»¶ã‚’満ãŸã™ã€‚
生æˆã•ã‚ŒãŸè¡Œåˆ—を出力ã—ã¦ä¸‹ã•ã„。
3 1 1 1 0 0 1 1 1 0 1 0 2 2 2 90
1 1 0 0 0 1 1 1 1
5 2 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 3 2 4 2 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 2 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 3 3 3 0 1 1 5 90
0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1