关注
我的思路就是暴力解法:1、遍历每一个点,该点作为up_left,判断它本身和up_right,down_left,down_right看是不是全为1,同时要排除这几个点没被用过,两个都符合则结果加1。 我的代码如下,只测试了题中的例子(当时没在右下角找到运行,不知道通过了多少)。不过现在想来应该有问题,因为判断这些点的时候应该四个点都判断用没用过,但我只判断了up_left。 #include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, m;
cin >> n;
cin >> m;
int mat[n][m]; //people matrix
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> mat[i][j];
}
}
int res = 0; //number of store
int upl = 0;
vector<pair<int,int> > node; // 存储被用过的点
for(int i=0; i<n-1; i++){
for(int j=0; j<m-1; j++){
int node_ok = 1;
vector<pair<int,int> > ::iterator iter; //访问vector
iter=node.begin();
for(iter=node.begin();iter!=node.end();iter++)
{
if(iter->first == i && iter->second == j)
node_ok = 0; //该点被用过不OK
}
if(node_ok != 1) //不OK接着看下一个点
continue;
if(mat[i][j]==1 && mat[i+1][j]==1 && mat[i][j+1]==1 && mat[i+1][j+1]==1) //这个点可以
{
res += 1;
//把几个点都加入vector,这些点不能用了
node.push_back(make_pair<int,int>(i, j));
node.push_back(make_pair<int,int>(i+1, j));
node.push_back(make_pair<int,int>(i, j+1));
node.push_back(make_pair<int,int>(i+1, j+1));
}
}
}
cout << res <<endl;
return res;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
2025-12-16 12:46
河北农业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 今年春招是金一银二嘛? #
17619次浏览 200人参与
# 总结:哪家公司面试体验感最好 #
79049次浏览 439人参与
# 没关系,至少我的__很曼妙 #
7896次浏览 131人参与
# 来聊聊你目前的求职进展 #
717289次浏览 6983人参与
# 赚钱的意义在这一刻具象化 #
8461次浏览 185人参与
# AI求职实录 #
10735次浏览 294人参与
# 抛开难度不谈,你最想去哪家公司? #
9954次浏览 178人参与
# 为什么有人零实习也能进大厂? #
9651次浏览 201人参与
# 1月小结:你过的开心吗? #
3555次浏览 70人参与
# 快手年终开大包 #
2397次浏览 40人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
12248次浏览 297人参与
# 你的第一家实习公司是什么档次? #
8053次浏览 103人参与
# 当你问AI“你会取代我的工作吗”,它说_? #
6247次浏览 183人参与
# 牛客吐槽大会 #
6923次浏览 121人参与
# 你的landing期是如何度过的? #
12612次浏览 245人参与
# 除了Java,最推荐学什么技术? #
10452次浏览 212人参与
# 你见过最离谱的招聘要求是什么? #
255132次浏览 1730人参与
# 实习最想跑路的瞬间 #
112173次浏览 688人参与
# 25届网易互娱暑实进度 #
95437次浏览 755人参与
# 美团秋招笔试 #
184449次浏览 1011人参与