uva1515(模拟)
生活随笔
收集整理的這篇文章主要介紹了
uva1515(模拟)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
一只烏龜,最開始在坐標原點上,他有四種操作,如下:
F:向當前方向前進一步(烏龜的初始方向是向上↑);
B:向當前方向的相反方向前進一步;
L:向左轉90度,不進行移動;
R:向右轉90度,不進行移動;
現在給出你一個字符串,由FBLR組成,問烏龜走完路徑之后,他走過的點覆蓋的面積。
思路:
模擬即可,沒什么可說的。
代碼:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<vector> #include<map> #include<stack> #include<cmath> #include<cstdlib> #include<climits> #include<sstream>using namespace std;char com[550];int main() {int t;scanf("%d",&t);while(t--){scanf("%s",com);int len=strlen(com);int x=0,y=0;int dir=1;int minx=0;int miny=0;int maxx=0;int maxy=0;for(int i=0;i<len;i++){if(com[i]=='F'){if(dir==1){y++;miny=min(y,miny);maxy=max(y,maxy);}else if(dir==2){x++;minx=min(x,minx);maxx=max(x,maxx);}else if(dir==3){y--;miny=min(y,miny);maxy=max(y,maxy);}else{x--;minx=min(x,minx);maxx=max(x,maxx);}}else if(com[i]=='B'){if(dir==1){y--;miny=min(y,miny);maxy=max(y,maxy);}else if(dir==2){x--;minx=min(x,minx);maxx=max(x,maxx);}else if(dir==3){y++;miny=min(y,miny);maxy=max(y,maxy);}else{x++;minx=min(x,minx);maxx=max(x,maxx);}}else if(com[i]=='L'){if(dir==1)dir=4;else if(dir==2)dir=1;else if(dir==3)dir=2;else dir=3;}else if(com[i]=='R'){if(dir==1)dir=2;else if(dir==2)dir=3;else if(dir==3)dir=4;else dir=1;}}int ans=(maxx-minx)*(maxy-miny);printf("%d\n",ans);}return 0; }總結
以上是生活随笔為你收集整理的uva1515(模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uva1511(找规律。。。)
- 下一篇: uvalive5843(最大流)