• <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)先級判斷功能 
             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;//這個(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 混沌的云 閱讀(335) 評論(0)  編輯 收藏 引用

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


            <2009年1月>
            28293031123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品成人免费观看97| 久久天天躁狠狠躁夜夜躁2014| 久久久精品2019免费观看| 国产精品无码久久久久久| 丁香久久婷婷国产午夜视频| 久久久久无码精品国产app| 少妇久久久久久久久久| 免费国产99久久久香蕉| 久久久久人妻一区二区三区 | 午夜不卡久久精品无码免费| 久久精品国产亚洲av麻豆小说| 国产精品久久久99| 久久久久国产精品熟女影院| 99久久99久久精品国产| 久久综合狠狠综合久久综合88| 久久精品无码一区二区三区| 久久久久国产精品人妻| 久久99精品久久久久久齐齐| 久久精品国产半推半就| 久久精品国产精品亚洲精品| 国产亚州精品女人久久久久久| 精品久久久久久成人AV| 久久久久亚洲av成人网人人软件 | 久久精品成人欧美大片| 久久国产亚洲精品无码| 久久成人国产精品免费软件| 伊人色综合久久天天人守人婷| 色综合合久久天天综合绕视看| 国产成人精品白浆久久69| 久久婷婷五月综合色高清| 国产激情久久久久久熟女老人| 色播久久人人爽人人爽人人片aV| 久久综合综合久久97色| 国产精品99久久久久久人| 久久99精品国产一区二区三区| 久久精品aⅴ无码中文字字幕重口| 中文精品久久久久人妻不卡| 中文字幕乱码久久午夜| 亚洲精品tv久久久久久久久| 国产午夜免费高清久久影院| 国产一区二区精品久久|