关注
我的思路就是暴力解法: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;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
439004次浏览 4476人参与
# 春招别灰心,我们一人来一句鼓励 #
41166次浏览 519人参与
# 北方华创开奖 #
107126次浏览 595人参与
# 地方国企笔面经互助 #
7892次浏览 18人参与
# 实习,投递多份简历没人回复怎么办 #
2453266次浏览 34840人参与
# 虾皮求职进展汇总 #
112536次浏览 877人参与
# 阿里云管培生offer #
119391次浏览 2217人参与
# 实习必须要去大厂吗? #
55495次浏览 959人参与
# 投递实习岗位前的准备 #
1195491次浏览 18543人参与
# 你投递的公司有几家约面了? #
33150次浏览 188人参与
# 双非本科求职如何逆袭 #
661622次浏览 7390人参与
# 机械人春招想让哪家公司来捞你? #
157571次浏览 2267人参与
# 发工资后,你做的第一件事是什么 #
12306次浏览 60人参与
# 工作中,努力重要还是选择重要? #
35426次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20052次浏览 240人参与
# 实习想申请秋招offer,能不能argue薪资 #
39169次浏览 314人参与
# 非技术岗是怎么找实习的 #
155823次浏览 2120人参与
# 校招入职后的感受 #
162354次浏览 1982人参与
# 找工作,你会甘心进小厂还是猛冲大厂 #
145973次浏览 1601人参与
# 机械求职避坑tips #
24681次浏览 256人参与
# 工作两年想退休了 #
56948次浏览 732人参与
# 找实习多的是你不知道的事 #
1310410次浏览 18370人参与