Hi.
Welcome to G4EF

First of all, your program had a bug due to which it didn't find the correct paths.
You were passing x,y into find_path; but were working with the pair y,x. So, the abscissa and ordinates just got reversed.

See this sample run :
Code:
The row and column of the starting point is (2,6)
The row and column of the destination is (14,13)
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  R  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  X  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Run the maze area with or without block:
1.Without block
2.With block
Enter your selection <1><2>1

MAZE:
      .  .  +  +  +  +  +  +  +  +  +  +  +  +  +  +
      .  .  +  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  +  .  .  .  R  .  .  .  .  .  .  +  +  +
      .  .  +  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  +  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  +  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  +  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  X  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  +  +
Total non visited steps191
Success!
Total Steps63
See that, although it should start from (2,6), it started from (6,2).

Anyway, I corrected the code for you, and here it is :
Code: CPP
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <vector>
#define FALSE 0
#define TRUE 1

using namespace std;
static int steps;
int n,colsend,rowend,column,row,blockrow,blockcol,;

// Symbols:
// '.' = open
// '#' = blocked
// 'R' = robot
// 'X' = goal
// '+' = path

void displaymaze(vector<vector<char> >);
void display(vector<vector<char> >);
int find_path(int x, int y,vector<vector<char> >);


int main()
{
    int choice,numsquare,numblock;
    int limit = 1;
    int nonvisit = 0;

    cout <<"Set the value of n x n squares area:"<<endl;
    cout <<"Enter the value for n:";
    cin >> n;
    vector<vector<char> > square(n,vector<char>(n,'.'));

    display(square);
    cout<<"\nThis is the square area robot could move."<<endl;
    cout <<"\nNow specific the robot starting point and destination to move:"<<endl;

    cout <<"Enter which row to start(starting from 0) :";
    do
    {
        cin >> row;
        if (row > (n-1) || row<0)
            cout<<"The row size is not in range,please enter again:";
    }
    while (row > (n-1) || row<0);
    cout <<"Enter which column to start(starting from 0) :";
    do
    {
        cin >> column;
        if (column > (n-1) || column <0)
            cout<<"The column size is not in range,please enter again:";
    }
    while (column > (n-1) || column <0);

    cout <<"Enter which row to end(starting from 0) :";
    do
    {
        cin >> rowend;
        if (rowend > (n-1)||rowend <0)
            cout<<"The column size is not in range,please enter again:";
    }
    while (rowend >(n-1)||rowend <0);
    cout <<"Enter which column to end(starting from 0) :";
    do
    {
        cin >> colsend;
        if (colsend > (n-1)||colsend <0)
            cout<<"The column size is not in range,please enter again:";
    }
    while (colsend > (n-1)||colsend <0);
    system("cls");


    cout<<"The row and column of the starting point is ("<<row<<","<<column<<")"<<endl;
    cout<<"The row and column of the destination is ("<<rowend<<","<<colsend<<")"<<endl;
    square[row][column]='R';
    square[rowend][colsend]='X';
    display(square);
    cout <<"Run the maze area with or without block:"<<endl;
    cout <<"1.Without block"<<endl;
    cout <<"2.With block"<<endl;
    cout <<"Enter your selection <1><2>";
    cin >> choice;

    if (choice ==1)
    {
        system("cls");

        if ( find_path(column, row,square) == TRUE )
        {
            cout<<"Success!\n";
        }
        else
            cout<<"Failed\n";

        cout<<"Total Steps = "<<steps;

    }

    if (choice ==2)
    {
        system("cls");
        cout <<"How many block to be insert:"<<endl;
        cout <<"1.One"<<endl;
        cout <<"2.More than one"<<endl;
        cout <<"Enter your selection <1>/2>";
        cin >>numsquare;
        if (numsquare==1)
        {
            cout <<"Which position to insert the block:"<<endl;
            cout <<"Block row:";
            cin >> blockrow;
            cout <<"Block column:";
            cin >> blockcol;
            square[blockrow][blockcol]='#';
            if ( find_path(column, row,square) == TRUE )
            {
                cout<<"Success!\n";
            }
            else
                cout<<"Failed\n";

            cout<<"Total Steps = "<<steps;
        }
        if (numsquare==2)
        {
            cout <<"How many block to be insert:"<<endl;
            cin >> numblock;
            while (limit<=numblock)
            {
                cout <<"Which position to insert the block "<<limit<<":"<<endl;
                cout <<"Block row:";
                cin >> blockrow;
                cout <<"Block column:";
                cin >> blockcol;
                square[blockrow][blockcol]='#';
                limit++;
            }

            if ( find_path(column, row,square) == TRUE )
            {
                cout<<"\nSuccess!\n";
            }
            else
                cout<<"Failed\n";

            cout<<"Total Steps = "<<steps<<endl;
        }


    }



    getch();
    return 0;
}
// main()


void displaymaze(vector<vector<char> >maze)
{
    cout<<"MAZE:\n";

    for (int a=0;a<n;a++)
    {
        cout<<setw(7);
        for (int b=0;b<n;b++)
        {
            cout<<maze[a][b];
            cout<<setw(3);
        }
        cout<<endl;
    }

    return;
}

void display(vector<vector<char> >square)
{
    for (int x=0;x<n;x++)
    {
        cout<<setw(7);
        for (int y=0;y<n;y++)
        {
            cout << square[x][y];
            cout<<setw(3);
        }
        cout<<endl;
    }
}


int
find_path(int x, int y,vector<vector<char> >square)
{
    int nonvisit = 0;
    // If x,y is outside maze, return false.
    if ( x < 0 || x > n - 1 || y < 0 || y > n - 1 ) return FALSE;
// If x,y is the goal, return true.


    if ( square[y][x] == 'X')
    {
        displaymaze(square);
        for (int e=0;e<n;e++)
        {
            for (int f=0;f<n;f++)
            {
                if (square[e][f]=='.')
                {
                    nonvisit+=1;
                }

            }
        }
        cout<<"Total non visited steps = "<<nonvisit<<endl;
        return TRUE;
    }



// If x,y is not open, return false.
    if ( square[y][x] != '.' && square[y][x] != 'R' ) return FALSE;


    // Mark x,y part of solution path.
    if ( square[y][x] == '.' )square[y][x] = '+';
    steps++;


    // If find_path North of x,y is true, return true.
    if ( find_path(x, y - 1,square) == TRUE ) return TRUE;

    // If find_path East of x,y is true, return true.
    if ( find_path(x + 1, y,square) == TRUE ) return TRUE;

    // If find_path South of x,y is true, return true.
    if ( find_path(x, y + 1,square) == TRUE ) return TRUE;

    // If find_path West of x,y is true, return true.
    if ( find_path(x - 1, y,square) == TRUE ) return TRUE;

    //mark the repeat steps
    square[y][x]='X';
    return FALSE;
}

And here is the same sample run with the modified code :
Code:
The row and column of the starting point is (2,6)
The row and column of the destination is (14,13)
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  R  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  X  .  .
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Run the maze area with or without block:
1.Without block
2.With block
Enter your selection <1><2>1

MAZE:
      .  .  .  .  .  .  +  +  +  +  +  +  +  +  +  +
      .  .  .  .  .  .  +  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  R  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  +  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  X  +  +
      .  .  .  .  .  .  .  .  .  .  .  .  .  .  +  +
Total non visited steps = 200
Success!
Total Steps = 55
About the question you asked, I will think about it and tell you soon.

Last edited by SaswatPadhi; 11Sep2009 at 11:58.. Reason: FixedSys Font