#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 5 #define M 9 void dfs(int x, int y); void pop(void); void print(void); void push(int x, int y); int maze[N][M]; struct node { int x; int y; }; int top = 0; struct node path[1000]; int count; void dfs(int x, int y) { push(x, y); if (x >= N || x < 0 || y >= M || y < 0) { pop(); return ; } if (x == N-1 && y == M-1) { print(); printf("%d\n\n\n",count++); pop(); return; } dfs(x-2, y+1); dfs(x-1, y+2); dfs(x+1, y+2); dfs(x+2, y+1); pop(); } void push(int x, int y) { path[top].x = x; path[top].y = y; top++; } void pop(void) { top--; } void print(void) { int i; for (i = 0; i < top; i++) printf("( %d, %d )\n", path[i].x, path[i].y); } int main(void) { count = 0; dfs(0, 0); return 0; }