#include <iostream> #include <string> using namespace std; int m,n; int dfs(int** grid, int i, int j) {   if (i < 0 || i >= m || j < 0 || j >= n) return 0;   int count=0;   if (grid[i][j]) {     count++;     grid[i][j] = 0;     count+=dfs(grid, i - 1, j);     count+=dfs(grid, i + 1, j);     count+=dfs(grid, i, j - 1);     count+=dfs(grid, i, j + 1);     count+=dfs(grid, i - 1, j-1);     count+=dfs(grid, i + 1, j - 1);     count+=dfs(grid, i - 1, j + 1);     count+=dfs(grid, i + 1, j + 1);   }   return count; } int numIslands(int** grid,int &q) {     if (m == 0) return 0;     if (n == 0) return 0;     int ans = 0;     int count=0;     q=0;     for (int i = 0; i < m; i++) {         for (int j = 0; j < n; j++) {             if (grid[i][j]==0) continue;             ans++;             count=dfs(grid, i, j);             if(count>q)               q=count;         }     }     return ans; } int main() {   string line1;   getline(cin,line1);   string tmp="";   int itmp;   for(int i=0;i<line1.length();i++)   {     if(line1[i]!=',')     {       tmp+=line1[i];     }     else     {       itmp=stoi(tmp);       m=itmp;       tmp="";     }   }   itmp=stoi(tmp);   n=itmp;   tmp="";   int **grid;   grid=new int *[m];   for(int i=0;i<m;i++)   {     grid[i]=new int[n];   }   int row,col;   row=m;   col=n;   for(int i=0;i<row;i++)   {     string rowtmp;     getline(cin,rowtmp);     int k=0;     for(int j=0;j<rowtmp.length();j++)     {       if(rowtmp[j]!=',')       {         tmp+=rowtmp[j];       }       else       {         itmp=stoi(tmp);         grid[i][k]=itmp;         tmp="";         k++;       }     }     itmp=stoi(tmp);     grid[i][k++]=itmp;     tmp="";   }   int P;   int Q;   P=numIslands(grid,Q);   cout<<P<<","<<Q<<endl; }
点赞 评论

相关推荐

迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
牛客网
牛客企业服务