小岛问题
来源:互联网 发布:信号发生器软件 编辑:程序博客网 时间:2024/04/27 23:01
问题描述:比如给一个岛, 1 1 1 1 1 1 1 1 只有0的左右,上下都有1包围的时候才能算做小岛,所以这个图的小岛就是10,即中间封闭的0的格式,而两边的0都是没有封闭的,
1 0 0 0 0 0 1 1 不可计数。
1 1 0 0 0 1 1 0
0 1 0 0 1 1 0 0
1 1 1 1 1 1 1 1
思考:简单的遍历即可,在处理是否被包围的时候,只需要判断该数的上,下,左右,是否都大于等于1,即有1包围即可。
源代码:
#include <iostream>
using namespace std;
int island[100][100];
int num;
int jude(int x, int y)
{
//判断行
int tmp = 0;
for (int i = 0; i < y; i++)
tmp += island[x][i];
if (tmp < 1)
return 0;
else{
tmp = 0;
for (int i = y; i < num; i++)
if (i == y)
continue;
else
{
tmp += island[x][i];
}
if (tmp < 1)
return 0;
}
tmp = 0;
for (int i = 0; i < x; i++)
tmp += island[i][y];
if (tmp < 1)
return 0;
else{
tmp = 0;
for (int i = x; i < num; i++)
if (i == x)
continue;
else
{
tmp += island[i][y];
}
if (tmp < 1)
return 0;
}
return 1;
}
int main(void)
{
cin >> num;
int tmp;
int count = 0;
int i = 0;
getchar();
for (i = 0; i < num; i++)
for (int j = 0; j < num; j++)
cin >> island[i][j];
int ares = 0;
for (i = 0; i < num; i++)
for (int j = 0; j < num; j++)
{
if (island[i][j] == 0)
{
if (jude(i, j))
ares++;
}
}
cout << ares<<endl;
return 0;
}
//////////////////////////////
代码没有写注释,因为思路比较简单,没有用到算法啥的。
- 小岛问题
- poj1328题(雷达覆盖小岛问题)
- 小岛梦
- 死亡小岛
- [SMOJ1830]小岛
- 小岛面积
- 连接小岛
- leetcode小岛问题2道 (DFS的递归法和迭代法应用)
- 【字符串】转自小岛
- 小岛和雷达
- 舟山群岛小岛攻略
- 小岛场景搭建
- [SMOJ1831]小岛II
- 二维数组寻找小岛
- AHOI 2015 小岛
- 待字闺中之死亡小岛分析
- 贪心 51Nod1460 连接小岛
- 51Nod-1460-连接小岛
- JDK-jinfo:java配置信息工具
- dubbo架构图–从启动日志里看
- 性能测试监控:Jmeter+Collectd+Influxdb+Grafana
- vue的v-for小练习表单
- 关于Java函数式编程
- 小岛问题
- SpringMVC Controller设置400/404/500自定义错误页面
- phpStudy开发环境 PHPStorm下XDebug配置
- 房贷计算
- mybatis的动态语句
- 机器学习:Peter Harrington《机器学习实战》代码jupyter notebook整理
- C++中防止一个类被继承
- CodeForces 841B (B) 博弈
- 我的第一个C语言程序