#include <stdio.h>#define N 5#define NSQUARE N*Nint HorseTry(int i, int x, int y, int h[N+1][N+1]);static int a[9] = 0, 2, 1, -1, -2, -2, -1, 1, 2;static int b[9] = 0, 1, 2, 2, 1, -1, -2, -2, -1;main() int i, j, flag, x, y; static int h[N+1][N+1] =0; printf("Input the initial position x,y:"); scanf("%d,%d", &x, &y); h[x][y] = 1; flag = HorseTry(2, x, y, h); if (flag) printf("Output:\n"); for (i=1; i<=N; i++) for (j=1; j<=N; j++) printf("%5d", h[i][j]); printf("\n"); else printf("No solution!\n"); int HorseTry(int i, int x, int y, int h[N+1][N+1]) int u, v, flag, count = 0; do count++; flag = 0; u = x + a[count]; v = y + b[count]; if ((u>=1&&u<=N) && (v>=1&&v<=N) && h[u][v]==0) h[u][v] = i; if (i < NSQUARE) flag = HorseTry(i+1, u, v, h); if (!flag) h[u][v] = 0; else flag = 1; while (!flag && count<8); return flag;这个程序我看不懂啊,谁能用语言详细解释一下啊,比如各个部分之间模块的作用