往8个方向访问就行了
多说一句,我没看到输入是 m,n
这样的,所以最开始我是scanf("%d %d", &m, &n);
后来发现牛客的case是可以复制的。。才debug出来这个问题,浪费了10min+。
以下是代码
#include
using namespace std;
int visit(vector>& matrix, int i, int j) {
int ret=0;
if(i=matrix.size() || j>=matrix[0].size())
return ret;
if(matrix[i][j]==1) {
++ ret;
matrix[i][j] = -1;
}
else
return ret;
for(int x=-1; x<=1; ++x) {
for(int y=-1; y<=1; ++y) {
if(x!=0 || y!=0)
ret += visit(matrix, i+x, j+y);
return ret;
}
int main() {
int m, n;
int p,q;
p=0, q=0;
scanf("%d,%d", &m, &n); {
vector > matrix(m, vector(n, 0));
for(int i=0; i<m; ++i) {
scanf("%d", &matrix[i][0]);
for(int j=1; j<n; ++j) {
scanf(",%d", &matrix[i][j]);
}
}
for(int i=0; i<m; ++i) {
for(int j=0; j<n; ++j) {
if(matrix[i][j]==1) {
q = max(q, visit(matrix, i, j));
++p;
}
}
}
printf("%d,%d", p, q);
}
return 0;
}