У меня возникли проблемы с завершением этой программы. Задача состоит в том, чтобы с помощью рекурсии найти путь через лабиринт, состоящий из крестиков и ноликов. Путь, по которому можно пройти, обозначен буквой O. Лабиринт хранится в виде текстового файла.
Вот пример лабиринта:
XOXXXXXX
XOXXXXXX
XOOOOXXX
XXXXOXXX
XXXXOOXX
XXXXXOXX
XXXXXOOO
XXXXXXXO
И вот мой прикрепленный код. Я прилагаю весь свой код, но я не хотел бы, чтобы мне говорили, как именно это сделать, я здесь, чтобы учиться :-). Я действительно считаю, что моя проблема заключается в том, чтобы не учитывать тот же O, который я только что искал, но я не уверен на 100%. Спасибо!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find_path(char maze[8][8], int coorx, int coory);
int main(int argc, char *argv[])
{
char maze[8][8];
int i=0,j=0;
FILE *fp;
fp = fopen(argv[1], "r");
for(i=0;i<9;i++)
for(j=0;j<9;j++)
fscanf(fp,"%c",&maze[i][j]);
fclose(fp);
printf("%c", maze[2][3]);
return 0;
}
int find_path(char maze[8][8], int coorx, int coory)
{
//if((maze[coorx][coory]!= 'O') && (coorx >=0) && (coorx < 8) && (coory >=0) &&
//(coorx < 8)){
if(find_path(maze, coorx + 1, coory) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx - 1, coory) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx, coory + 1) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx, coory - 1) == 'O'){
printf("(%d,%d)",coorx, coory);
}
return 0;
}