• <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 //由于本題要輸出最短時(shí)間,所以要用優(yōu)先隊(duì)列,喲西 
              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;//這個(gè)東西是優(yōu)先隊(duì)列的優(yōu)先級(jí)判斷功能 
             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];//用來(lái)保存路徑 
             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;//這個(gè)是優(yōu)先隊(duì)列定義 
             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();//這個(gè)是一個(gè)很大的區(qū)別,如果普通隊(duì)列是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)先隊(duì)列,所以第一次找到就成功了 
            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)先隊(duì)列,用的是論壇上的代碼,加了批注 

            posted on 2009-02-08 00:51 混沌的云 閱讀(334) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2009年2月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            1234567

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲日韩欧美一区久久久久我| 久久人妻少妇嫩草AV无码蜜桃| 久久超乳爆乳中文字幕| 麻豆成人久久精品二区三区免费| 久久最新精品国产| 久久精品99无色码中文字幕| 97久久婷婷五月综合色d啪蜜芽 | 久久久久国色AV免费观看| 伊色综合久久之综合久久| 69SEX久久精品国产麻豆| 久久亚洲国产成人影院网站| 日韩精品久久久久久免费| 精品久久人人做人人爽综合| 浪潮AV色综合久久天堂| 久久久久婷婷| 亚洲狠狠久久综合一区77777 | 国产精品九九九久久九九| 伊人久久大香线蕉精品不卡 | 亚洲AV无码久久精品成人| 久久成人国产精品一区二区| 久久精品一本到99热免费| 久久婷婷色香五月综合激情| 国产激情久久久久影院| 国产产无码乱码精品久久鸭| 久久精品中文字幕大胸| 久久精品国产一区二区| 久久亚洲国产精品一区二区| 国产亚洲欧美精品久久久| 亚洲精品美女久久久久99| 久久久黄色大片| 要久久爱在线免费观看| 久久免费观看视频| 久久人人超碰精品CAOPOREN| 久久精品国产亚洲精品| 九九久久精品无码专区| 国产69精品久久久久99尤物| 婷婷久久综合九色综合98| 中文精品久久久久国产网址| 99久久夜色精品国产网站| 国产精品综合久久第一页| 精品久久久久久久久久久久久久久|