1. 程式人生 > 其它 >【LeetCode】463 Island Perimeter

【LeetCode】463 Island Perimeter

技術標籤:leetcode動態規劃

原題地址:463. Island Perimeter

解法

逐個遍歷每個格子,計算相鄰的陸地數4-陸地數就是這個格子的周長。

int islandPerimeter(vector<vector<int>>& grid) {
	int dir[4][2] = { {0, 1}, {0, -1}, {1, 0}, {-1, 0} };
	int n_i, n_j;
	int res = 0;

	for (int i = 0; i < grid.size(); ++i)
	{
		for (int j = 0; j < grid[i].size(); ++j)
		{
			if (grid[i][j] == 1)
			{
				int b = 0;
				for (int k = 0; k < 4; ++k)
				{
					n_i = i + dir[k][0];
					n_j = j + dir[k][1];
					if (n_i >= 0 && n_i < grid.size() 
					    && n_j >= 0 && n_j < grid[i].size() 
				        && grid[n_i][n_j])
					{
						b++;
					}
				}
				res += (4 - b);
			}
		}
	}

	return res;
}