• <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 //由于本題要輸出最短時間,所以要用優(yōu)先隊列,喲西 
              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;//這個東西是優(yōu)先隊列的優(yōu)先級判斷功能 
             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函數(shù)和地圖大小 
             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;//這個是優(yōu)先隊列定義 
             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();//這個是一個很大的區(qū)別,如果普通隊列是front而優(yōu)先則是輸出最優(yōu)先的 
             97       Q.pop();
             98       if(N[w].x==n-1&&N[w].y==m-1)
             99       {
            100           success=1;
            101           break;//由于是優(yōu)先隊列,所以第一次找到就成功了 
            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 }//第一次用優(yōu)先隊列,用的是論壇上的代碼,加了批注 

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

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产亚洲7777| 欧美一区二区三区久久综合 | 国产精品无码久久综合| 久久亚洲日韩精品一区二区三区| 人妻丰满AV无码久久不卡| 国产精品久久久久…| 亚洲国产精久久久久久久| 久久93精品国产91久久综合| 伊人久久亚洲综合影院| 色婷婷综合久久久久中文一区二区 | 亚洲精品白浆高清久久久久久| 日韩人妻无码精品久久免费一| 久久免费线看线看| 亚洲?V乱码久久精品蜜桃| 狠狠精品久久久无码中文字幕| 精品国产一区二区三区久久久狼 | 欧美午夜A∨大片久久 | 亚洲AV无一区二区三区久久| 99久久婷婷免费国产综合精品| 久久人人爽人人爽人人片AV麻豆| 亚洲精品无码久久久久sm| 91久久精品视频| 99久久做夜夜爱天天做精品| 99久久无色码中文字幕| 久久久这里有精品| 麻豆久久| 久久综合九色综合97_久久久| 思思久久好好热精品国产| 国产精品久久久久aaaa| 日本五月天婷久久网站| 91精品国产91久久久久久青草| 国内精品久久久久久久久电影网| 国产成人香蕉久久久久| 久久久久亚洲AV无码麻豆| 性做久久久久久久久老女人| 国产成人精品久久| 国产亚洲欧美成人久久片| 久久亚洲AV无码精品色午夜| 久久精品女人天堂AV麻| 青青草原综合久久大伊人精品| 久久亚洲精品无码AV红樱桃|