X Всего Фигур — Решение Выдает Ошибку Во Время Выполнения

#recursion #graph #depth-first-search

Вопрос:

Задана сетка из n*m, состоящая из O и X. Задача состоит в том, чтобы найти общее количество фигур «X». Примечание: Фигура » X » состоит из одного или нескольких соседних X (диагонали не включены).

Вход: сетка = {{X,O,X},{O,X,O},{X,X,X}} Вывод: 3 Пояснение: Сетка — X O X O X O X X X X Так, X с одинаковым цветом примыкают друг к другу по вертикали для горизонтали (диагонали не включены). Итак, в данной сетке есть 3 разные группы.

Я написал следующий код для вышеуказанной проблемы, но получаю ошибку во время выполнения. Я не могу понять, что не так с моим кодом.

 // { Driver Code Starts
#include<bits/stdc  .h>
using namespace std;

 
    
    void sweep(vector<vector<char>>amp;grid,int visited[][100],int n, int m, int currx, int curry){
        // base cases
        if(visited[currx][curry]==1) return;
        if(grid[currx][curry]!='X') return;
        if(currx >=n || currx<0||curry>=m  || curry<0) return;
   
        
        visited[currx][curry] = 1;
        sweep(grid,visited,n,m,currx,curry-1);
        sweep(grid,visited,n,m,currx,curry 1);
        sweep(grid,visited,n,m,currx-1,curry);
        sweep(grid,visited,n,m,currx 1,curry);
        
    }
    
    int xShape(vector<vector<char>>amp; grid) 
    {
       int n = grid.size();
       int m = grid[0].size();
       int countt= 0;
       int visited[n 1][100];
       // initialize visited array with 0
       for(int i=0;i<n;i  ){
           for(int j=0;j<m;j  ){
               visited[i][j]=0;
           }
       }
       
       for(int i=0;i<n;i  ){
           for(int j=0;j<m;j  ){
             if(grid[i][j] == 'X' amp;amp; visited[i][j] == 0){
                 countt = 1;
                 sweep(grid,visited,n,m,i,j); // sweep through connected cells and make them visited
             }  
           }
       }
       return countt;
    }


// { Driver Code Starts.
int main(){
    int tc;
    cin >> tc;
    while(tc--){
        int n, m;
        cin >> n >> m;
        vector<vector<char>>grid;
        for(int i = 0; i < n; i  ){
            for(int j = 0; j < m; j  ){
                cin >> grid[i][j];
            }
        }
        
        int ans = xShape(grid);
        cout << ans <<'n';
    }
    return 0;
}  // } Driver Code Ends