• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 20,  comments - 6,  trackbacks - 0
              1 //由于本題要輸出最短時間,所以要用優先隊列,喲西 
              2 #include<iostream>
              3 #include<stdio.h>
              4 #include<functional>
              5 using namespace std;
              6 #include<queue>
              7 struct Node
              8 {
              9     friend bool operator<(Node n1,Node n2)
             10     {
             11         return n1.t > n2.t;//這個東西是優先隊列的優先級判斷功能 
             12     }
             13     int x;
             14     int y;
             15     int t;
             16     struct Node *prev;//指向前綴 
             17 };
             18 Node N[10003],P;
             19 bool success;
             20 int w;
             21 int dir[][2]={{1,0},{0,1},{-1,0},{0,-1}};
             22 char map[101][101];
             23 int mark[101][101],n,m;//hash函數和地圖大小 
             24 int _x[1001],_y[1001];//用來保存路徑 
             25 int main()
             26 {
             27     void bfs();
             28     while(scanf("%d%d",&n,&m)!=EOF)
             29     {
             30         int i;
             31         for(i=0;i<n;i++)
             32           cin>>map[i];
             33         success=false;
             34         bfs();//廣搜部分 
             35         if(success)
             36         {
             37           printf("It takes %d seconds to reach the target position, let me show you the way.\n",N[w].t);
             38           int len=N[w].t;
             39           _x[len]=N[w].x;_y[len]=N[w].y;
             40           Node *p;
             41           p=&N[w];
             42           int b=len;
             43           while(1)
             44           {
             45               p=p->prev;
             46               if(p==NULL)
             47                   break;
             48               b--;
             49               _x[b]=(*p).x;
             50             
             51               _y[b]=(*p).y;
             52             
             53           }
             54           int o=1;
             55       
             56           for(i=b;i<=len-1;i++)
             57           {
             58             
             59               if(map[_x[b+1]][_y[b+1]]=='.')
             60               {
             61                   printf("%ds:(%d,%d)->(%d,%d)\n",o,_x[b],_y[b],_x[b+1],_y[b+1]);
             62                   b++;
             63                   o++;
             64               }
             65               else if(map[_x[b+1]][_y[b+1]]!='.')
             66               {
             67                     printf("%ds:(%d,%d)->(%d,%d)\n",o,_x[b],_y[b],_x[b+1],_y[b+1]);
             68                     int v=o;
             69                     for( o=o+1; o<v+1+map[_x[b+1]][_y[b+1]]-'0';o++)
             70                     {
             71                         printf("%ds:FIGHT AT (%d,%d)\n",o,_x[b+1],_y[b+1]);
             72                     }
             73                     b++;
             74               }
             75             
             76           }
             77         
             78         }
             79         else
             80             printf("God please help our poor hero.\n");
             81         printf("FINISH\n");
             82     }
             83 }
             84 
             85 void bfs()
             86 {
             87   memset(mark,0,sizeof(mark));
             88   priority_queue<Node>Q;//這個是優先隊列定義 
             89   N[1].t=0;N[1].x=0;N[1].y=0;N[1].prev=NULL;
             90   mark[0][0]=1;
             91   Q.push(N[1]);
             92   w=2;
             93   while(!Q.empty())
             94   {
             95     
             96       N[w]=Q.top();//這個是一個很大的區別,如果普通隊列是front而優先則是輸出最優先的 
             97       Q.pop();
             98       if(N[w].x==n-1&&N[w].y==m-1)
             99       {
            100           success=1;
            101           break;//由于是優先隊列,所以第一次找到就成功了 
            102       }
            103       for(int i=0;i<4;i++)
            104       {
            105           int tx=N[w].x+dir[i][0];
            106           int ty=N[w].y+dir[i][1];
            107           if(tx>=0 && tx<&& ty>=0 && ty<&& !mark[tx][ty])
            108           {
            109             if(map[tx][ty]!='X')
            110             {
            111               P.x=tx;P.y=ty;P.prev=&N[w];
            112               mark[tx][ty]=1;
            113               if(map[tx][ty]=='.')
            114               {
            115                   P.t=N[w].t+1;
            116                   Q.push(P);
            117               }
            118               if(map[tx][ty]!='.')
            119               {
            120                   P.t=N[w].t+1+map[tx][ty]-'0';
            121                   Q.push(P);
            122               }
            123             }
            124           }
            125       }
            126       w++;
            127   }
            128 
            129 }//第一次用優先隊列,用的是論壇上的代碼,加了批注 

            posted on 2009-02-08 00:51 混沌的云 閱讀(333) 評論(0)  編輯 收藏 引用
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            四虎影视久久久免费观看| 久久人人妻人人爽人人爽| 99国内精品久久久久久久| 精品一区二区久久| 久久国产午夜精品一区二区三区| 久久成人精品| 久久综合国产乱子伦精品免费| 国产亚洲婷婷香蕉久久精品| 国产成人综合久久精品尤物| 久久无码AV中文出轨人妻| 精品久久久久久无码专区不卡| 久久av免费天堂小草播放| 久久久久人妻精品一区 | 久久婷婷五月综合97色一本一本| 日韩精品久久久久久免费| 国内精品久久久久久久亚洲| 亚洲国产精品无码久久98| 久久婷婷五月综合97色直播| 东京热TOKYO综合久久精品| 久久天天躁狠狠躁夜夜2020一| 国产99久久久国产精品~~牛| 婷婷伊人久久大香线蕉AV| 尹人香蕉久久99天天拍| 国产伊人久久| 欧美一区二区精品久久| 婷婷伊人久久大香线蕉AV| 综合网日日天干夜夜久久| 久久这里的只有是精品23| 国产真实乱对白精彩久久| 国产精品禁18久久久夂久| 性欧美丰满熟妇XXXX性久久久 | yy6080久久| 四虎国产精品成人免费久久| 久久国产精品视频| 久久久久国产精品三级网| 久久精品无码免费不卡| 国产亚州精品女人久久久久久 | 久久国产精品一区二区| 国产情侣久久久久aⅴ免费| 囯产精品久久久久久久久蜜桃 | 久久99精品国产|