高艺婕 edited 8 月,4 周前
w
#include <string>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
int DFS(int i, int j, bool **visited, string **a, int row, int column, int &sum){
visited[i][j]=true;
int k, m;
k=i-1;
m=j;
if(0<=k && k<row && 0<=m && m<column && visited[k][m]==false && a[k][m]=="*"){
sum++;
DFS(k, m, visited, a, row, column, sum);
}
k=i+1;
m=j;
if(0<=k && k<row && 0<=m && m<column && visited[k][m]==false && a[k][m]=="*"){
sum++;
DFS(k, m, visited, a, row, column, sum);
}
k=i;
m=j-1;
if(0<=k && k<row && 0<=m && m<column && visited[k][m]==false && a[k][m]=="*"){
sum++;
DFS(k, m, visited, a, row, column, sum);
}
k=i;
m=j+1;
if(0<=k && k<row && 0<=m && m<column && visited[k][m]==false && a[k][m]=="*"){
sum++;
DFS(k, m, visited, a, row, column, sum);
}
return sum;
}
int main(){
int max_sum=0;
int row, column;
cin>>column>>row;
cin.get();
string **a = new string*[row];
for(int j=0; j<row; j++){
a[j] = new string[column];
}
for(int i=0; i<row; i++){
for(int j=0; j<column; j++){
a[i][j]="";
}
}
for(int i=0; i<row; i++){
string temp;
getline(cin, temp);
int j=0;
for(char c:temp){
a[i][j]=c;
j++;
}
}
bool **visited = new bool*[row];
for(int j=0; j<row; j++){
visited[j] = new bool[column];
}
for(int i=0; i<row; i++){
for(int j=0; j<column; j++){
visited[i][j]=false;
}
}
for(int i=0; i<row; i++){
for(int j=0; j<column; j++){
if(!visited[i][j] && a[i][j]=="*"){
int sum = 1;
int sum_now = DFS(i,j,visited,a,row,column,sum);
max_sum = max(sum_now, max_sum);
}
}
}
cout<<max_sum<<endl;
// 释放动态分配的二维数组 a
for(int j = 0; j < row; ++j) {
delete[] a[j]; // 释放每一行的内存
}
delete[] a; // 释放指向行指针的内存
// 释放动态分配的二维数组 visited
for(int j = 0; j < row; ++j) {
delete[] visited[j]; // 释放每一行的内存
}
delete[] visited; // 释放指向行指针的内存
return max_sum;
}