미 로 를 깊이 있 게 옮 겨 다 니 며 해답 을 구하 다
7514 단어 미궁깊이 옮 겨 다 니 기데이터 구조&STL
- #include
- #define MAXSIZE 150
- struct
- {
- int i; int j; int di;
- }st[MAXSIZE];
-
- int mg[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}
- };
-
- void mgpath(int x1, int y1, int x2, int y2)
- {
- int i,j, di, find, k, top = -1;
- top++;
- st[top].i = i = x1; st[top].j = j = y1; st[top].di = di = -1;
- mg[x1][y1] = -1;
- while(top > -1)
- {
- if(st[top].i == x2 && st[top].j == y2) //
- {
- for(k = 0; k <= top; k++)
- printf("i = %d , j = %d , di = %d .
",st[k].i, st[k].j, st[k].di);
- return ;
- }
- find = 0; // , , 0 ,
- while(find ==0 && st[top].di
- {
- st[top].di ++;
- switch(st[top].di)
- {
- case 0:
- i = st[top].i -1 ; j = st[top].j; if(mg[i][j] == 0) find = 1;break;
- case 1:
- i = st[top].i ; j = st[top].j + 1; if(mg[i][j] == 0) find = 1; break;
- case 2:
- i = st[top].i + 1; j = st[top].j ; if(mg[i][j] == 0) find = 1; break;
- case 3:
- i = st[top].i ; j = st[top].j -1 ; if(mg[i][j] == 0) find = 1; break;
- }
- }
- if(find == 1)
- {
- // , ,
- top++;
- st[top].i = i; st[top].j = j; st[top].di = -1; //
- mg[i][j] = -1; //
- }else
- {
- mg[st[top].i][st[top].j] = 0; // , , , ,
- top--; // di
- }
- }
- printf("
");
- }
-
- void main1()
- {
- mgpath(1,1,8,8);
- }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
미 로 를 깊이 있 게 옮 겨 다 니 며 해답 을 구하 다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.