往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; }
点赞 4

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务