Tìm đường trong ma trận bằng đệ quy

đề là tìm đường ra khỏi mê cung
mình có một mê cung có kích thước n*m;
mê cung gồm các số 0,1 và chỉ được đi vào ô có số 0;
và đường đi được sẽ được đánh bằng số 2

#include <iostream>
using namespace std;
int n,m;
int a[100][100];

void get(int x, int y)
{
    if (x==n && y==m ) 
    {
        for (int i=0; i< n; i++)
        {   
            for (int j=0; j< m; j++)
                cout << a[i][j] <<" "; 
            cout << endl;
        }
    }
    else{get(x,y);}
    
    if (a[x+1][y]==0 && x!=(n-1)) 
    {
        a[x][y]==2;
        get(x+1,y);
    }else
    if (a[x][y+1]==0&& y!=(n-1)) 
    {
        a[x][y]==2;
        get(x,y+1);
    }
    else 
    if (x>=1 && a[x-1][y]==0) 
    {
        a[x][y]==2;
        get(x-1,y);
    }
    else 
    if (y>=1 && a[x][y-1]==0) 
    {
        a[x][y]==2;
        get(x,y-1);
    }
}

int main()
{
    int x=0, y=0;
    cin >> n >> m;
    for (int i=0; i< n; i++)
    for (int j=0; j< m; j++)
        cin >> a[i][j];
    get(x,y);
}

mn chỉnh giúp mk với
test :
4 5
0 0 1 0 0
1 0 1 0 0
1 0 0 1 0
1 1 0 0 0
EDIT (@library): @sincos Cậu nhớ sử dụng Markdown để format code ở các post sau nhé! :smile:

trình bày ý tưởng của bạn ra?
bạn đang bị vướng chỗ nào?

2 Likes

mình sẽ bắt đầu đi từ vị trí 00 => sang phải || trái || trên || dưới nếu đi được cho đến khi đến vị trí [n-1][m-1]
mình làm như trên nhưng bị lỗi

Nhầm giữa số dòng và số cột rồi:

if (a[x][y+1]==0&& y!=(n-1))
3 Likes

mình có sửa thành m-1 r nhưng vẫn lỗi
test :
4 5
0 0 1 0 0
1 0 1 0 0
0 0 0 1 0
0 1 0 0 0

Thật là tốt khi bạn đã có ý tưởng
Nhưng việc chương trình xảy ra lỗi là rất bình thường, lập trình viên phải đối mặt với lỗi là điều hiển nhiên
Kinh nghiệm của lập trình viên phần nhiều đến từ việc debug. Bạn nên dùng hết mọi cách có thể, từ cách tệ hay nhất cho tới những cách hay hơn

Lỗi xảy ra ở dòng X thì bạn có thể thêm trước dòng X một dòng code, show ra những gì ở dòng X xem nó như thế nào
Bạn cũng có thể đoán được dựa vào thông báo lỗi

Những cái này rất dễ dàng làm được, thậm chí tự bạn làm còn nhanh hơn người khác
Khi mà bạn chỉ post code, kể cả khi code đó đầy đủ và build được, thì người khác mang về chạy, cũng đâu biết được bạn input những gì mà bị lỗi

nhìn sơ qua chắc là code của bạn chạy vô tận hay gì đó đại khái là chạy không dừng nhỉ?

đệ quy dừng khi nào?

5 Likes

e cảm ơn ạ! e mới học nên nhiều chỗ lỗi e cx không biết nên giải quyết ở chỗ nào mặc dù đã sửa nhiều lần, mong a/c có thể giúp e
đệ quy dừng khi x==n và y==m.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?