亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        迷宮探路III(最短路徑)

        字號:

        將從迷宮入口到各點的最短路近的集合看作一棵樹。用廣度遍歷的方法即可找到出口的最短路近。本程序算法思想來源于求圖上一點到其余各點最短路近的Dijkstra算法。
             /* 迷宮探路III(最短路徑)*/
            /* DIJKSTRAMAZE.C */
            /* 2003-8-26 */
            #include
            #include
            #include
            #include
            #include
            #define N 22
            #define M 22
            int bg[M][N];
            int aa[M][N];
            struct pace{
             int pre;
             int x;
             int y;
             int ri;
             int rj;
            }road[M*N];
            struct pace bestroad[M*N];
            void makebg(int,int);
            void drawbg(int[][],int,int,int,int,int);
            void drawman(int,int,int);
            void rect(int,int,int,int);
            void main(){/* main()開始 */
            int step=20;
            int len=10;
            int size=20;
            int x=0,y=0;
            int i=0,j=0;
            int gdriver=DETECT,gmode;
            char ch;
            int direc;
            int routelen=0;
            int dj[]={-1,1,0,0};
            int di[]={0,0,-1,1};
            int begin;
            int end;
            int k;
            int t;
            int num;
            int suc;
            int cnt;
            int x0;
            int y0;
            int le;
            int tmp;
            makebg(M,N);
            /* registerbgidriver(EGAVGA_driver);
             initgraph(&gdriver,&gmode,"c:\\turboc2");*/
             initgraph(&gdriver,&gmode,"c:\\tc20\\bgi");
            cleardevice();
            setwritemode(XOR_PUT);
            settextstyle(1,0,3);
            setcolor(GREEN);
            outtextxy(100,180,"DIJKSTRA MAZE");
            setcolor(BLUE);
            setfillstyle(LINE_FILL,BLUE);
            /*drawbg(bg,M,N,size,0,0);*/
            drawbg(aa,M,N,size,0,0);
            setcolor(WHITE);
            x+=len;y+=len;
            drawman(x,y,len);
            x0=x;y0=y;
            /* 電腦控制 */
            i=j=0;
            aa[0][0]=1;
            begin=0;
            end=0;
            road[0].ri=0;
            road[0].rj=0;
            road[0].x=x0;
            road[0].y=y0;
            road[0].pre=-1;
            le=1;
            suc=0;
            while(!suc){
            cnt=0;
            le++;
            for(k=begin;k<=end;k++){
             for(t=0;t<4;t++){
             x=road[k].x+dj[t]*step;
             y=road[k].y+di[t]*step ;
             i=road[k].ri+di[t];
             j=road[k].rj+dj[t];
             if(i=0&&j=0&&aa[i][j]==0){
             cnt++;
             aa[i][j]=le;
             road[end+cnt].pre=k;
             road[end+cnt].x=x;
             road[end+cnt].y=y;
             road[end+cnt].ri=i;
             road[end+cnt].rj=j;
             if(i==N-1&&j==M-1){
             suc=1;
             break;
             }
             }
             }
             if(suc)break;
            }
            begin=end+1;
            end=end+cnt;
            }
            /* output */
            i=end;j=0;
            while(i!=-1){
             bestroad[j].x=road[i].x;
             bestroad[j].y=road[i].y;
             bestroad[j].ri=road[i].ri;
             bestroad[j].rj=road[i].rj;
             i=road[i].pre;
             j++;
            }
            for(i=0;i     tmp=bestroad[i].x;
             bestroad[i].x=bestroad[j-1-i].x;
             bestroad[j-1-i].x=tmp;
             tmp=bestroad[i].y;
             bestroad[i].y=bestroad[j-1-i].y;
             bestroad[j-1-i].y=tmp;
            }
            getch();
            drawman(x0,y0,len);
            for(i=0;i     drawman(bestroad[i].x,bestroad[i].y,len);
             delay(80000);
             drawman(bestroad[i].x,bestroad[i].y,len);
            }
            i--;
            drawman(bestroad[i].y,bestroad[i].x,len);
            getch();
            closegraph();
            }