• <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)
            明天給出答案,大家做做撒,寫到回復(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:自然的寫法是每次都判斷是不是到了邊界 不要邊界外的子結(jié)點(diǎn)
            比較有創(chuàng)意的寫法是給邊界外面加一道圍墻 即增設(shè)標(biāo)記為"1"的附加方格(本程序采用)

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

            #include <stdio.h>

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

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

            int board[M+2][N+2]; //棋盤
            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è)置棋盤外一圈"圍墻"
            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é)專用版嗎?被我發(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è)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            QQ:41696402

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            Programming

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 39216
            • 排名 - 540

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            91精品国产综合久久婷婷| 久久亚洲国产午夜精品理论片| 香蕉久久久久久狠狠色| 久久精品国产乱子伦| 久久久久中文字幕| 一日本道伊人久久综合影| 人妻久久久一区二区三区| 精品久久久久中文字幕一区| 久久久久99这里有精品10| 72种姿势欧美久久久久大黄蕉| 人妻无码久久精品| 狠狠色丁香久久婷婷综合五月| 久久人人爽人人精品视频| 97久久精品国产精品青草| 亚洲va久久久久| 国产成人精品综合久久久| 久久精品www人人爽人人| 亚洲精品WWW久久久久久| 麻豆精品久久久一区二区| 亚洲色欲久久久综合网| 性做久久久久久免费观看 | 国产免费久久精品99re丫y| 天天久久狠狠色综合| 色婷婷综合久久久久中文| 久久久久久久久66精品片| 国内精品久久久久久不卡影院| 99久久精品费精品国产一区二区 | 少妇内射兰兰久久| 伊人热热久久原色播放www| 国产午夜电影久久| 国产欧美久久一区二区| 久久精品水蜜桃av综合天堂| 2021国产精品午夜久久| 怡红院日本一道日本久久| 久久91精品国产91久久麻豆| 国产精品久久久久久| 丰满少妇人妻久久久久久| 久久婷婷成人综合色综合| 日韩乱码人妻无码中文字幕久久| 亚洲精品美女久久久久99| 亚洲国产精品久久电影欧美|