秦乐妍
(中原铃菜)
1
题目描述
给定一个n*m的二进制矩阵,请你数一数矩阵中完全被0上下左右包围的1的数目。
输入格式
第一行两个整数n和m(3<=n,m<=100)
接下来n行,每行m个0或1的整数。
输出格式
输出一个整数代表结果
蒟蒻WA代码
#include<bits/stdc++.h>
using namespace std;
int a[505][505];
int main(){
int n,m,cnt;
cin >> n >> m;
memset(a,-1,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1&&a[i-1][j]&&a[i][j+1])
cnt++;
}
}
cout << cnt;
}
1 个赞
丁浩然
(丁浩然)
2
核心代码:
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> matrix(n, vector<int>(m));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> matrix[i][j];
}
}
int count = 0;
for (int i = 1; i < n - 1; ++i) {
for (int j = 1; j < m - 1; ++j) {
if (matrix[i][j] == 1) {
if (matrix[i - 1][j] == 0 && matrix[i + 1][j] == 0 &&matrix[i][j - 1] == 0 && matrix[i][j + 1] == 0) {
count++;
}
}
}
}
cout << count << endl;
记得加 return 0 和头文件
1 个赞
郭可昱
(青笺画卿颜)
3
vector<vector> matrix(n, vector(m));
这一行代码有问题啊
1 个赞
丁浩然
(丁浩然)
5
是
matrix(n, vector<int>(m));
丁浩然
(丁浩然)
7
这段是C++中的一个函数调用,用于创建一个矩阵的实例