number of islands

来源:互联网 发布:电视台曝光网络黄金egd 编辑:程序博客网 时间:2024/05/18 02:32
//============================================================================// Name        : reversestring.cpp// Author      : qxyu// Version     :// Copyright   : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>#include<vector>#include<algorithm>#include<cmath>#include<queue>#include<map>#include<stack>#include<string>#include<unordered_map>#include<memory>//#include<uint32_t>using namespace std; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; class Solution { public:void dfs(int x, int y, vector<vector<char>>& grid,vector<vector<bool>>& vis){int colu=grid[0].size()-1;int row=grid.size()-1;vis[x][y]=true;for(int k = 0; k < 4; k ++){int new_x=x+dir[k][0];int new_y=y+dir[k][1];if(new_x<0||new_x>row||new_y<0||new_y>colu) continue;if(grid[new_x][new_y]=='0') continue;if(vis[new_x][new_y]==true) continue;dfs(new_x,new_y,grid,vis);}}     int numIslands(vector<vector<char>>& grid) {    int cnt=0;    int row=grid.size();    int colu=grid[0].size();    if(row==0) return 0;         vector<vector<bool> >vis (row,vector <bool>(colu,false));         for(int i = 0; i <grid.size(); i ++){        for(int j = 0; j < grid[i].size(); j ++){        if(grid[i][j]=='0') continue;        if(vis[i][j]) continue;        dfs(i,j,grid,vis);        cnt++;        }         }         return cnt;     } };int main(){vector<vector<char>> ma;vector<char> m;m.push_back('1');m.push_back('1');m.push_back('1');m.push_back('1');m.push_back('0');ma.push_back(m);m.clear();m.push_back('1');m.push_back('1');m.push_back('0');m.push_back('1');m.push_back('0');ma.push_back(m);m.clear();m.push_back('1');m.push_back('1');m.push_back('0');m.push_back('0');m.push_back('0');ma.push_back(m);m.clear();m.push_back('0');m.push_back('0');m.push_back('0');m.push_back('0');m.push_back('0');ma.push_back(m);m.clear();Solution sol;ma.clear();cout<<sol.numIslands(ma);  return 0;}

0 0
原创粉丝点击