當前位置:編程學習大全網 - 編程語言 - 高分題~~C語言高手請進。。迷宮問題

高分題~~C語言高手請進。。迷宮問題

//本來想用開空間的,後來想想太麻煩了……

#include<stdio.h>

//#include<iostream.h>

//#include<malloc.h>

//int **maze;

//int N1,N2;

int maze[10][10]={{1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,0,0,1,1,0,0,1},{1,0,1,1,1,0,0,0,0,1},{1,0,0,0,1,0,0,0,0,1},{1,0,1,0,0,0,1,0,0,1},{1,0,1,1,1,0,1,1,0,1},{1,1,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};

int zx=8,zy=2;

void PrintMaze(void){

int l[100][2],i,j;

for(i=0;i<100;i++){

l[i][0]=-1;

}

for(i=0;i<10;i++){

for(j=0;j<10;j++){

if(maze[i][j]>2){

l[maze[i][j]-3][0]=i;

l[maze[i][j]-3][1]=j;

}

}

}for(i=0;i<100;i++){

if(l[i][0]!=-1)printf("(%d,%d)\n",l[i][0],l[i][1]);

else goto end;

}

end:for(i=0;i<10;i++){

for(j=0;j<10;j++){

if(maze[i][j]>2){

maze[i][j]=2;

}printf("%d ",maze[i][j]);

}printf("\n");

}

}int SelMaze(int x,int y){

if(x>9||y>9||x<0||y<0)return(0);

return(maze[x][y]==0);

}int FindMaze(int x,int y,int m){

if(x==zx&&y==zy){

maze[x][y]=m;

return(1);

}

if(SelMaze(x+1,y)){

maze[x][y]=m;

if(FindMaze(x+1,y,m+1))return(1);

maze[x][y]=0;

}if(SelMaze(x,y+1)){

maze[x][y]=m;

if(FindMaze(x,y+1,m+1))return(1);

maze[x][y]=0;

}if(SelMaze(x,y-1)){

maze[x][y]=m;

if(FindMaze(x,y-1,m+1))return(1);

maze[x][y]=0;

}if(SelMaze(x-1,y)){

maze[x][y]=m;

if(FindMaze(x-1,y,m+1))return(1);

maze[x][y]=0;

}

return(0);

}

void main(){

int x=1,y=1;

if(!FindMaze(x,y,3))printf("迷宮無出路\n");

else PrintMaze();

}

//做了20分鐘啊!為分奮鬥ING!

  • 上一篇:橋梁蓋梁計算的兩大算法詳細演示?
  • 下一篇:linux下安裝qt
  • copyright 2024編程學習大全網