/*_Jeremy_kahanic_March_1_2000

******************1

*S==============**2

*=******=******=**3

*=***====*====****4

*=====**===**F****5

*=******=*********6

*==========*******7

******************8

123456789012345678

*/

#include 

#include 

#include 

#include 

#include 

void mat(int i, int j, apmatrix  matrix, int count);

apmatrix  final(100,100,'*');

int mainsmall=9999, possible=0;

int main()

    {

    apmatrix  matrix(100,100,'*');

    ifstream fin("Maze.cpp");

    cin=fin;

    apstring nothing;

    cin>>nothing;

    for (int i=0; i<8; i++)

    for (int j=0; j<19; j++)

    cin>>matrix[i][j];

    cout<<"'A maze can be solved if at least attempted at, I think.' - Jeremy"<

    for (int i=0; i<8; i++)

        {

        for (int j=0; j<18; j++)

            {if (matrix[i][j]=='=') cout<<" "; else cout<

            cout<

        }

        cout<

        mat(1,1,matrix,0);

        final[1][1]='S';

        for (int i=0; i<8; i++)

            {

            for (int j=0; j<18; j++)

                {if (final[i][j]=='=') cout<<" "; else cout<

                cout<

            }

            cout<

            cout<<"Possibilities: "<

            getch();

            return 0;

        }

        void mat(int i, int j, apmatrix  matrix, int count)

            {

            if (matrix[i+1][j]=='F' || matrix[i-1][j]=='F' || matrix[i][j+1]=='F' || matrix[i][j-1]=='F')

                {

                possible++;

                matrix[i][j]='+';

                if (count

                    {

                    mainsmall=count;

                    final=matrix;

                }

            }

                else{

                matrix[i][j]='+';

                if (matrix[i+1][j]=='=') mat(i+1, j, matrix, count+1);

                if (matrix[i-1][j]=='=') mat(i-1, j, matrix, count+1);

                if (matrix[i][j+1]=='=') mat(i, j+1, matrix, count+1);

                if (matrix[i][j-1]=='=') mat(i, j-1, matrix, count+1);}

            }