老鼠走迷宮2

說明由于迷宮的設計,老鼠走迷宮的入口至出口路徑可能不只一條,如何求出所有的路徑呢?
解法求所有路徑看起來復雜但其實更簡單,只要在老鼠走至出口時顯示經過的路徑,然后退回上一格重新選擇下一個位置繼續(xù)遞回就可以了,比求出單一路徑還簡單,我們的程式只要作一點修改就可以了。

(好好思考,先找一個簡單的迷宮走一次過程)

#include <stdio.h>
#include <stdlib.h>

void visit(int ,int);
int a[9][9]={{2, 2, 2, 2, 2, 2, 2, 2, 2},
             {2, 0, 0, 0, 0, 0, 0, 0, 2},
             {2, 0, 2, 2, 0, 2, 2, 0, 2},
             {2, 0, 2, 0, 0, 2, 0, 0, 2},
             {2, 0, 2, 0, 2, 0, 2, 0, 2},
             {2, 0, 0, 0, 0, 0, 2, 0, 2},
             {2, 2, 0, 2, 2, 0, 2, 2, 2},
             {2, 0, 0, 0, 0, 0, 0, 0, 2},
             {2, 2, 2, 2, 2, 2, 2, 2, 2}};
int starti=1,startj=1;
int endi=7,endj=7;
int num=0;

int main()
{
   int i,j;
   printf("顯示路徑:\n");
   for(i=0;i<9;i++)
   {
       for(j=0;j<9;j++)
        {
            if(a[i][j]==2) printf("█");
            else printf("  ");
        }
        printf("\n");
   }
   visit(starti,startj);

   return 0;
}

void visit(int i,int j)
{
    a[i][j]=1;
    if(i==endi&&j==endj)
    {
        num++;
        printf("第%d條路為:\n",num);
        int m,n;
        for(m=0;m<9;m++)
        {
            for(n=0;n<9;n++)
                {
                    if(a[m][n]==2) printf("█");
                    else if(a[m][n]==1) printf("◇");
                    else printf("  ");
                }
            printf("\n");
        }
    }

    if(a[i][j+1]==0)  visit(i,j+1);
    if(a[i+1][j]==0)  visit(i+1,j);
    if(a[i][j-1]==0)  visit(i,j-1);
    if(a[i-1][j]==0)  visit(i-1,j);
    a[i][j]=0;

}
image.png
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 說明老鼠走迷宮是遞回求解的基本題型,我們在二維陣列中使用2表示迷宮墻壁,使用1來表示老鼠的行走路徑,試以程式求出由...
    gtxe閱讀 603評論 0 0
  • 前任三最近非?;鹆?,票房蹭蹭往上升,昨天也去電影院看了,想起了我的前任,她是一名女程序員,為了讓我學好java,她...
    ToEnd閱讀 491評論 0 4
  • 官方文檔:https://developer.android.com/guide/topics/connectiv...
    白帽子耗子閱讀 1,085評論 1 3
  • 這幾天天天滴滴打車,感受到了它給我?guī)淼谋憷?,也感受到了不同的師傅所表現出來的不同的態(tài)度。 有的師傅一聲不吭,從開...
    賴鶯閱讀 260評論 1 2
  • 一生中 總有那么一個人 一相遇就注定要錯過 然后 我們對自己說 下輩子吧 早點兒遇到你 或者 遇到你的時候 不早 ...
    開在夜里的花兒閱讀 233評論 7 10

友情鏈接更多精彩內容