奶牛bessie在乙個矩形網格的舞台上跳舞。每一格是乙個1 x 1的單元方格。bessie的四隻腳縮寫如下:
fr: 右前腳
fl: 左前腳
rr: 右後腳
rl: 左後腳
下面的初始狀態表示bessie頭朝北方站在相鄰的4個方格裡,形成乙個正方形:
fl fr
rl rr
bessie跳舞一共有n(1 <= n <= 1000)個指令,每條指令要求bessie的乙隻腳移動一格,或者是以乙隻腳為支點,順時針旋轉90度。
移動指令是3字元的,前2個字元描述哪乙隻腳,第3個字元描述移動方向:(f = 前進, b = 後退, r = 右, l = 左)
例如,"frf"表示右前腳向前移一格。"rlr"表示左後腳向右移一格。注意,移動的方向與bessie的頭朝向有關。
旋轉指令也是3字元的,前2個字元描述哪乙隻腳,第3個字元固定為'p'。
例如,"frp"表示以右前腳為支點,順時針旋轉90度。如果她旋轉前站成這樣(頭朝北):
.. .. ..
.. .. fr
.. fl ..
.. rl rr
旋轉後將站成這樣(頭朝東):
rl fl ..
rr .. fr
.. .. ..
.. .. ..
給出n條指令,求乙個最小的矩形區域作為舞台,使得bessie在上面跳舞,任何時刻每條腳都在舞台上。
如果某個時刻,bessie的兩條腳需要站在同乙個格仔裡,停止跳舞,輸出-1
除此情況外,其他任何的四條腳的狀態(例如後腳移動到前腳之前)都是合法的。
input format:
第1行: 乙個整數n
接下來n行,每行乙個指令
sample input (file ballet.in):
3frf
frprlb
output format:
第1行:乙個整數,表示最小的矩形的面積。
sample output (file ballet.out):
16output details:
bessie 需要乙個 4 x 4的舞台,它的移動過程為:
.. .. .. ..
.. .. .. .. (facing north)
.. .. fl fr
.. .. rl rr
after frf:
.. .. .. ..
.. .. .. fr (facing north)
.. .. fl ..
.. .. rl rr
after frp:
.. rl fl ..
.. rr .. fr (facing east)
.. .. .. ..
.. .. .. ..
after rlb:
rl .. fl ..
.. rr .. fr (facing east)
.. .. .. ..
.. .. .. ..
這道題剛開始看時,只想到只需上下左右動就行了,可寫到一半時發現,旋轉時,需要考慮頭的方向,可見,這道題很zz
開始想用陣列來儲存踩過的點,再搜出上下左右四個點,結果超時………………
想了一晚上,後經同學啟發,發現可以,邊跳邊計算舞台最大長寬,終於,ac**出爐了!!
順便吐槽一下,這奶牛也是個長腿歐巴,腳跨得好遠,呵呵…………
**如下:
#include#includeint xm[4][4]=,,,},ym[4][4]=,,,};
int cf[4][2]=,,,};
int xy[4]=;
char c[3];
int f;
void work(int x,int t)
if(c[2]=='b')
if(c[2]=='l')
if(c[2]=='r')
if(c[2]=='p')
f++;
f%=4; }}
int main()
} printf("%d",(xy[2]-xy[0]+1)*(xy[3]-xy[1]+1));
}
python書中練習題 python練習題
1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...
python的練習題 Python練習題
1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...
練習題 基礎練習
第一題 需求 1 計算 5 個月的生活大概開銷 spending 比如 rent 房租 800.00 mealcost 吃飯 900.00 clothingcosts 買衣服 300.00 othercosts 其他費用 300.00 public class dome1 第二題 需求 2 計算 1...