<div id="7x91n"></div>
    <progress id="7x91n"><tr id="7x91n"><ruby id="7x91n"></ruby></tr></progress>

    <em id="7x91n"></em>
      <progress id="7x91n"></progress>

      <dl id="7x91n"><ins id="7x91n"></ins></dl>

          <div id="7x91n"></div>

          <dl id="7x91n"></dl>

          <dl id="7x91n"><ins id="7x91n"><thead id="7x91n"></thead></ins></dl>

            <div id="7x91n"><tr id="7x91n"></tr></div>

            <div id="7x91n"></div>
            <div id="7x91n"></div>
            <dl id="7x91n"></dl><dl id="7x91n"><ol id="7x91n"></ol></dl>
            首頁 > 其他 > 詳細

            洛谷P1189 `SEARCH`

            時間:2018-09-23 11:01:43      閱讀:51      評論:0      收藏:0      [點我收藏+]

            標簽:路線   可能   class   通過   getc   clu   esp   algo   put   

            洛谷P1189 `SEARCH`

            題意:

              年輕的拉爾夫開玩笑地從一個小鎮上偷走了一輛車,但他沒想到的是那輛車屬于警察局,并且車上裝有用于發射車子移動路線的裝置。

              那個裝置太舊了,以至于只能發射關于那輛車的移動路線的方向信息。

              編寫程序,通過使用一張小鎮的地圖幫助警察局找到那輛車。程序必須能表示出該車最終所有可能的位置。

              小鎮的地圖是矩形的,上面的符號用來標明哪兒可以行車哪兒不行。“.”表示小鎮上那塊地方是可以行車的,而符號“X”表示此處不能行車。拉爾夫所開小車的初始位置用字符的“*”表示,且汽車能從初始位置通過。

              汽車能向四個方向移動:向北(向上),向南(向下),向西(向左),向東(向右)。

              拉爾夫所開小車的行動路線是通過一組給定的方向來描述的。在每個給定的方向,拉爾夫駕駛小車通過小鎮上一個或更多的可行車地點。

            思路:

              有點模擬的意思吧。。。

              就是當讀到一個方向的時候,就把原地圖上所有有小車的點向該方向平移,平移小車會在地圖上形成一條軌跡,軌跡上的每一個點都會計入下一次的平移

              然后就好了

            代碼:

              

             1 #include <iostream>
             2 #include <cstdio>
             3 #include <cstring>
             4 #include <algorithm>
             5 using namespace std;
             6 #define MAXN 110
             7 const int dy[5]={0,-1,0,1,0};
             8 const int dx[5]={0,0,-1,0,1};
             9 int mmap[MAXN][MAXN],tmpmap[MAXN][MAXN];
            10 int i,j,k,m,n,r,p,f,x,y;
            11 char str[MAXN];
            12 char c;
            13 int main(){
            14 #ifndef ONLINE_JUDGE
            15     freopen("search.in","r",stdin);
            16     freopen("search.out","w",stdout);
            17 #endif
            18     //scanf("%d%d",&n,&m);
            19     //getchar();   //此處輸入方式與下方不同
            20     cin>>n>>m;
            21     memset(mmap,0,sizeof(mmap));
            22     for(i=1;i<=n;i++){
            23         for(j=1;j<=m;j++){
            24             //c=getchar();  //此處輸入方式與下方不同
            25             cin>>c;
            26             if(c==.){
            27                 mmap[i][j]=1;
            28             }else{
            29                 if(c==*) mmap[i][j]=2;
            30             }
            31         }
            32         getchar();
            33     }
            34     scanf("%d",&p);
            35     getchar();
            36     for(r=1;r<=p;r++){
            37         scanf("%s",str+1);
            38         //gets(str+1);
            39         if(str[1]==N){
            40             f=1;
            41         }else{
            42             if(str[1]==W){
            43                 f=2;
            44             }else{
            45                 if(str[1]==S){
            46                     f=3;
            47                 }else{
            48                     f=4;
            49                 }
            50             }
            51         }
            52         for(i=1;i<=n;i++){
            53             for(j=1;j<=m;j++){
            54                 if(mmap[i][j]==2){
            55                     x=j+dx[f],y=i+dy[f];
            56                     while(x>0&&x<=m&&y>0&&y<=n&&mmap[y][x]){
            57                         tmpmap[y][x]=2;
            58                         x+=dx[f],y+=dy[f];
            59                     }
            60                 }
            61             }
            62         }
            63         for(i=1;i<=n;i++){
            64             for(j=1;j<=m;j++){
            65                 if(mmap[i][j]==2) mmap[i][j]=1;
            66                 if(tmpmap[i][j]==2) mmap[i][j]=2,tmpmap[i][j]=0;
            67             }
            68         }
            69     }
            70     for(i=1;i<=n;i++){
            71         for(j=1;j<=m;j++){
            72             if(mmap[i][j]==0){
            73                 printf("%c",X);
            74             }else{
            75                 if(mmap[i][j]==1) printf("%c",.); else printf("%c",*);
            76             }
            77         }
            78         putchar(10);
            79     }
            80     return 0;
            81 }

             

            洛谷P1189 `SEARCH`

            標簽:路線   可能   class   通過   getc   clu   esp   algo   put   

            原文:https://www.cnblogs.com/linxif2008/p/9691721.html

            (0)
            (0)
               
            舉報
            評論 一句話評論(0
            0條  
            登錄后才能評論!
            ? 2014 bubuko.com 版權所有 魯ICP備09046678號-4
            打開技術之扣,分享程序人生!
                         

            魯公網安備 37021202000002號

            福建省餐饮许可现场