• <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 - 90,  trackbacks - 0

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

            //////大家來做做吧,看起來很有味哦///////

            posted on 2006-09-26 12:28 冬天¤不回來 閱讀(993) 評論(8)  編輯 收藏 引用

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

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

            Q2:從A點搜到B點 再搜B點 不又搜到A點了嗎?
            A1:當我們從A點搜到B點之后 A點就把0改成1 不就變成墻了嗎 就不會再搜回去了

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

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

            Q5:...
            A1:程序看不懂的地方可以直接來問我... 加油...
            */

            #include <stdio.h>

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

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

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

            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)
            */
              回復  更多評論
              
            # re: 趣味試題⒈
            2006-09-27 19:20 | 冬天¤不回來
            厲害.....看來真確答案不用我發(fā)了  回復  更多評論
              
            # re: 趣味試題⒈
            2006-11-09 11:17 | Asp
            這個不是CX同學專用版嗎?被我發(fā)現(xiàn)了……
            Optimistic??!!!!!!!!  回復  更多評論
              
            # re: 趣味試題⒈
            2006-11-11 23:19 | 冬天¤不回來
            CX不是OP~~~~  回復  更多評論
              
            # re: 趣味試題⒈
            2006-11-12 15:58 | 江水獸
            @冬天&#164;不回來
            @Asp
            CX是誰呀?  回復  更多評論
              
            # re: 趣味試題⒈
            2006-11-13 00:34 | 冬天¤不回來
            哈哈你去問問OP就曉得CX是誰拉~~~哈哈哇OHOH  回復  更多評論
              
            QQ:41696402

            <2006年9月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            Programming

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 39477
            • 排名 - 540

            最新評論

            閱讀排行榜

            評論排行榜

            99久久精品国产一区二区三区 | 精品久久久久久综合日本| 久久亚洲精精品中文字幕| 久久精品国产久精国产思思| 久久99精品国产99久久6男男| 国产精品va久久久久久久| 狠狠色丁香婷婷久久综合五月| 99精品久久精品一区二区| 欧美久久精品一级c片片| 麻豆精品久久久久久久99蜜桃| 久久99精品国产| 久久精品人人做人人爽电影| 99久久亚洲综合精品网站| 久久久久精品国产亚洲AV无码| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久99久久99精品免视看动漫| 久久精品成人免费观看97| 国内精品久久久久久久久电影网| 久久香蕉一级毛片| 婷婷综合久久中文字幕蜜桃三电影| 精品久久久久久无码人妻蜜桃| 欧美牲交A欧牲交aⅴ久久| 伊人色综合九久久天天蜜桃| 亚洲成人精品久久| 国产成人综合久久综合| 欧美va久久久噜噜噜久久| 国产精品久久久久久久app| 国内精品久久国产大陆| 性欧美大战久久久久久久久| 久久久久国产成人精品亚洲午夜| 久久青青草原国产精品免费 | 亚洲欧洲精品成人久久曰影片| 久久精品成人免费看| 久久人人妻人人爽人人爽| 性做久久久久久久久老女人| 亚洲国产成人久久综合碰碰动漫3d| 无码国产69精品久久久久网站| 中文字幕久久久久人妻| 热久久国产欧美一区二区精品| 热99RE久久精品这里都是精品免费 | 久久久久久精品久久久久|