• <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>
            冬天¤不回來(lái)
            海風(fēng)輕輕吹過(guò)我的臉龐 陽(yáng)光溫柔的灑在我身上 海鷗自由的飛在天空中像 快樂(lè)的徘徊在游樂(lè)場(chǎng) 白云在偷看彩虹的模樣 海洋總為那船長(zhǎng)指方向 海浪撫摸著沙灘的衣裳 我也每天都為他換上新裝 找到方向 揭開(kāi)迷茫 學(xué)著堅(jiān)強(qiáng) 努力去闖!
            posts - 20,  comments - 90,  trackbacks - 0

            ⒈ 用計(jì)算機(jī)模擬"迷宮問(wèn)題",求出其中的一條通路.用數(shù)組MAZE(?1..M,1..N)表示迷宮,數(shù)組元素為1意味著死路,為0表示通路,MAZE(1,1)為迷宮入口,MAZE(M,N)為迷宮出口.設(shè)計(jì)一個(gè)算法判別迷宮問(wèn)題是否有解,有解則打印出一條路徑.

            //////大家來(lái)做做吧,看起來(lái)很有味哦///////

            posted on 2006-09-26 12:28 冬天¤不回來(lái) 閱讀(980) 評(píng)論(8)  編輯 收藏 引用

            FeedBack:
            # re: 趣味試題⒈
            2006-09-26 12:41 | beyonlin
            深度優(yōu)先搜索~~  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-09-26 13:01 | 冬天¤不回來(lái)
            明天給出答案,大家做做撒,寫(xiě)到回復(fù)里就行了  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-09-27 19:00 | Optimistic
            //本程序求解<迷宮指路>
            //By Optimistic

            Q1:如何設(shè)計(jì)程序數(shù)據(jù)?
            A1:一般我們用一個(gè)2維數(shù)組表示這個(gè)迷宮 0代表路 1代表墻

            Q2:從A點(diǎn)搜到B點(diǎn) 再搜B點(diǎn) 不又搜到A點(diǎn)了嗎?
            A1:當(dāng)我們從A點(diǎn)搜到B點(diǎn)之后 A點(diǎn)就把0改成1 不就變成墻了嗎 就不會(huì)再搜回去了

            Q3:這樣不是只能搜到出口 但是不知道具體的路嗎?
            A1:有兩種解決的辦法
            1.從A點(diǎn)搜到B點(diǎn) 就記錄B點(diǎn)的前驅(qū)是A 這樣我們從出口一路找前驅(qū)就可以找到一條路 (本程序采用)
            2.我們搜的時(shí)候 記錄下從入口到此被搜結(jié)點(diǎn)的距離 這樣我們從出口一路找距離越來(lái)越小的結(jié)點(diǎn)
            也可以找到回入口的路

            Q4:要是搜到了邊界的0位置怎么辦呢?
            A1:自然的寫(xiě)法是每次都判斷是不是到了邊界 不要邊界外的子結(jié)點(diǎn)
            比較有創(chuàng)意的寫(xiě)法是給邊界外面加一道圍墻 即增設(shè)標(biāo)記為"1"的附加方格(本程序采用)

            Q5:...
            A1:程序看不懂的地方可以直接來(lái)問(wèn)我... 加油...
            */

            #include <stdio.h>

            const int M = 8, N = 8; //棋盤(pán)的行數(shù) 列數(shù)(默認(rèn)為8*8的迷宮 可隨意改變)
            struct Point
            {
            int x, y; //方格在棋盤(pán)里的行和列
            };

            struct Queue
            {
            int front; //隊(duì)首
            int rear; //隊(duì)尾
            Point d[4*M*N]; //元素 這個(gè)范圍是我想了想定的 應(yīng)該夠了
            }Q;

            int board[M+2][N+2]; //棋盤(pán)
            Point start, end; //起點(diǎn)和終點(diǎn)
            Point pre[M][N]; //記錄結(jié)點(diǎn)的前驅(qū)
            Point offset[4]; //相對(duì)位移

            bool findPath();
            void print();

            int main()
            {
            // freopen("BFS.in", "r", stdin);
            offset[0].x = 0, offset[0].y = 1;
            offset[1].x = 1, offset[1].y = 0;
            offset[2].x = 0, offset[2].y = -1;
            offset[3].x = -1, offset[3].y = 0;

            int i;
            printf("Enter the grid in row-major order:\n");
            for(i=1; i<=M; i++)
            for(int j=1; j<=N; j++)
            scanf("%d", &board[i][j]);
            printf("Enter the start position:\n");
            scanf("%d%d", &start.x, &start.y);
            printf("Enter the end position:\n");
            scanf("%d%d", &end.x, &end.y);

            if(findPath()) print();
            else printf("There is no such road from START to END.\n");

            return 0;
            }

            bool findPath() //搜索從start到end的一條通路 找到返回true 否則返回false
            {
            if(start.x == end.x && start.y == end.y)
            {
            pre[end.x][end.y] = end;
            return true;
            }
            //設(shè)置棋盤(pán)外一圈"圍墻"
            for(int i=0; i<=M+1; i++)
            {
            board[0][i] = board[M+1][i] = 1;
            board[i][0] = board[i][N+1] = 1;
            }

            Point cur = start; //current position
            Point np = start; //new position

            while(1)
            {
            for(i=0; i<4; i++)
            {
            np.x = cur.x + offset[i].x;
            np.y = cur.y + offset[i].y;
            if(board[np.x][np.y] == 0) //通路
            {
            pre[np.x][np.y] = cur;
            if((np.x == end.x) && (np.y == end.y)) break;
            Q.d[Q.rear] = np;
            Q.rear = (Q.rear+1)%(4*M*N);
            board[cur.x][cur.y] = 1;
            }
            }
            if((np.x == end.x) && (np.y == end.y)) break;
            if(Q.rear == Q.front) return false;
            cur = Q.d[Q.front];
            Q.front = (Q.front+1)%(4*M*N);
            }
            }

            void print()
            {
            printf("One path:\n");
            Point ans[M*N];
            int ansLen = 0;
            Point cur = end;
            ans[ansLen++] = cur;
            while(cur.x != start.x || cur.y != start.y)
            {
            cur = pre[cur.x][cur.y];
            ans[ansLen] = cur;
            ansLen++;
            }
            int i;
            for(i = ansLen-1; i>=0; i--)
            {
            printf("(%d,%d) ", ans[i].x, ans[i].y);
            if((i+1)%5==0) printf("\n");
            }
            printf("\n");
            }
            /*
            Sample Input:
            0 1 1 1 1 1 1 1
            0 0 1 1 1 1 1 1
            1 0 0 1 1 1 1 1
            1 1 0 0 1 1 1 1
            1 1 1 0 0 1 1 1
            1 1 1 1 0 0 1 1
            1 1 1 1 1 0 0 1
            1 1 1 1 1 1 0 0
            1 1
            8 8
            Sample Output:
            One Path:
            (1,1) (2,1) (2,2) (3,2) (3,3)
            (4,3) (4,4) (5,4) (5,5) (6,5)
            (6,6) (7,6) (7,7) (8,7) (8,8)
            */
              回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-09-27 19:20 | 冬天¤不回來(lái)
            厲害.....看來(lái)真確答案不用我發(fā)了  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-11-09 11:17 | Asp
            這個(gè)不是CX同學(xué)專(zhuān)用版嗎?被我發(fā)現(xiàn)了……
            Optimistic??!!!!!!!!  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-11-11 23:19 | 冬天¤不回來(lái)
            CX不是OP~~~~  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-11-12 15:58 | 江水獸
            @冬天&#164;不回來(lái)
            @Asp
            CX是誰(shuí)呀?  回復(fù)  更多評(píng)論
              
            # re: 趣味試題⒈
            2006-11-13 00:34 | 冬天¤不回來(lái)
            哈哈你去問(wèn)問(wèn)OP就曉得CX是誰(shuí)拉~~~哈哈哇OHOH  回復(fù)  更多評(píng)論
              

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


            QQ:41696402

            <2006年11月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            Programming

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 39212
            • 排名 - 540

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            日日噜噜夜夜狠狠久久丁香五月 | 久久久久国产一级毛片高清板| 久久99国内精品自在现线| 久久99国产精品久久99果冻传媒| 久久99国产精品久久久| 国内精品人妻无码久久久影院| 久久亚洲精品成人av无码网站| 伊人久久大香线蕉av不卡| 国产69精品久久久久99尤物| 久久天天躁狠狠躁夜夜avapp| www久久久天天com| 国产综合久久久久| 久久精品国产91久久综合麻豆自制| 国产精品久久久久久影院| 午夜精品久久久久久影视777| 久久久一本精品99久久精品66| 久久99精品免费一区二区| 久久青青草原亚洲av无码app| 久久亚洲精品成人AV| 精品久久久久香蕉网| 岛国搬运www久久| 亚洲伊人久久综合影院| 99久久精品国产毛片| 精品熟女少妇av免费久久| 中文字幕久久欲求不满| 色天使久久综合网天天| avtt天堂网久久精品| 久久免费视频6| 青青青青久久精品国产h久久精品五福影院1421 | 久久精品二区| 精品国产99久久久久久麻豆| 国产精品久久久久久福利69堂| 青青热久久国产久精品| 国产精品久久波多野结衣| 欧美亚洲国产精品久久久久| 久久国产成人午夜AV影院| 久久精品成人欧美大片| 国内精品久久久久久久久电影网 | 老男人久久青草av高清| 亚洲精品无码久久毛片| 精品999久久久久久中文字幕|