老鼠走迷宮問題,具體解釋寫在注釋中,思考即可
代碼如下
?
1 /*int jerry[7][7]={{2,2,2,2,2,2,2}, 2 {2,0,0,0,0,0,2}, 3 {2,0,2,0,2,0,2}, 4 {2,0,0,2,0,2,2}, 5 {2,2,0,2,0,2,2}, 6 {2,0,0,0,0,0,2}, 7 {2,2,2,2,2,2,2}} 8 老鼠走迷宮問題 9 */ 10 11 #include<stdio.h> 12 int walk(int,int); 13 int jerry[7][7]={{2,2,2,2,2,2,2},//定義一個(gè)7*7的二維數(shù)組 14 {2,0,0,0,0,0,2}, 15 {2,0,2,0,2,0,2}, 16 {2,0,0,2,0,2,2}, 17 {2,2,0,2,0,2,2}, 18 {2,0,0,0,0,0,2}, 19 {2,2,2,2,2,2,2}}; 20 int success=0; 21 int sti=1,stj=1;//定義入口 22 int endi=5,endj=5;//定義出口 23 24 25 int main(){ 26 int i,j; 27 printf("顯示出迷宮的樣子: "); 28 for(i=0;i<7;i++){ 29 for(j=0;j<7;j++) 30 { 31 if(jerry[i][j]==2) 32 printf("A ");//如果遍歷到墻則輸出A 33 else 34 printf("B "); 35 } 36 printf(" "); 37 } 38 printf(" "); 39 printf("開始走迷宮: "); 40 if(walk(sti,stj)==0)//如果以sti和stj為入口值一直不為1,則說明尋找出口失敗 41 printf("沒有找到出口"); 42 else{ 43 for(i=0;i<7;i++){ 44 for(j=0;j<7;j++) 45 { 46 if(jerry[i][j]==2)//遍歷到墻則輸出A 47 printf("A "); 48 else if(jerry[i][j]==1)//遍歷到1則輸出C,代表老鼠的路徑 49 printf("C "); 50 else 51 printf("B "); 52 } 53 printf(" "); 54 } 55 } 56 } 57 58 int walk(int i,int j)//走一個(gè)函數(shù),把老鼠jerry定在i,j位置 59 { 60 jerry[i][j]=1;//在ij位置開始走,初值定為1 61 if(i==endi&&j==endj)//如果走到endi和endj位置,則輸出success為1 62 { 63 success=1; 64 } 65 if(success!=1&&jerry[i][j+1]==0){//路徑不成功且右位置的值為0(模擬右移) 66 walk(i,j+1);//把老鼠位置定在i,j+1 67 } 68 if(success!=1&&jerry[i+1][j]==0){//路徑不成功且下位置的值為0(模擬下移) 69 walk(i+1,j);//把老鼠位置定在i+1,j 70 }if(success!=1&&jerry[i][j-1]==0){//路徑不成功且左位置的值為0(模擬左移) 71 walk(i,j-1);//把老鼠位置定在i,j-1 72 }if(success!=1&&jerry[i-1][j]==0){//路徑不成功且上位置的值為0(模擬上移) 73 walk(i-1,j);//把老鼠位置定在i-1,j 74 } 75 if(success!=1)//只要模擬路徑失敗 76 { 77 jerry[i][j]=0;//即把當(dāng)前值定位0,不計(jì)入路徑之中 78 } 79 80 return success; 81 }
?
本文摘自 :https://www.cnblogs.com/