#include <bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; vector<vector<int> > lines(m,vector<int>(n)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cin>>lines[i][j]; } } int sum=0; vector<pair<int,int> >offsets={{-1,0},{1,0},{0,-1},{0,1}}; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(lines[i][j]==1){ sum++; continue; } for(auto offset:offsets){ int newi=i+offset.first; int newj=j+offset.second; if(newi>=0&&newi<m&&newj>=0&&newj<n&&lines[newi][newj]==1){ sum++; break; } } } } cout<<sum<<endl; return 0; }和你写的代码输出为什么不同
时间: 2024-04-14 19:31:34 浏览: 78
万能头文件#include&amp;lt;bits/stdc++.h&amp;gt; using namespace std;
这两段代码的输出不同可能是由于输入数据的不同导致的。
这段代码的逻辑是统计矩阵中与值为 1 的元素相邻的元素个数,并将结果存储在 `sum` 变量中。对于每个元素,它首先检查自身是否为 1,如果是,则将 `sum` 增加 1。否则,它遍历四个方向上的相邻元素,如果有任何一个相邻元素为 1,则将 `sum` 增加 1,并使用 `break` 结束当前循环。
如果两段代码的输入数据不同,即矩阵中的元素不同,那么输出结果可能会不同。请确保输入数据相同,以便进行准确的比较。另外,如果你能提供具体的输入数据和输出结果,我可以更好地帮助你分析问题所在。
阅读全文