Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[pull] master from youngyangyang04:master #481

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
jenningsloy318 merged 6 commits into AlgorithmAndLeetCode:master from youngyangyang04:master
Sep 2, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Update 0106.岛屿的周长.md for python go
Update 0106.岛屿的周长.md for python go
  • Loading branch information
sxdtywm authored Aug 18, 2024
commit d03a507431cf7c123324be4f1924575f7d4b8ae0
123 changes: 123 additions & 0 deletions problems/kamacoder/0106.岛屿的周长.md
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,131 @@ public class Main {

### Python

```python

def main():
import sys
input = sys.stdin.read
data = input().split()

# 读取 n 和 m
n = int(data[0])
m = int(data[1])

# 初始化 grid
grid = []
index = 2
for i in range(n):
grid.append([int(data[index + j]) for j in range(m)])
index += m

sum_land = 0 # 陆地数量
cover = 0 # 相邻数量

for i in range(n):
for j in range(m):
if grid[i][j] == 1:
sum_land += 1
# 统计上边相邻陆地
if i - 1 >= 0 and grid[i - 1][j] == 1:
cover += 1
# 统计左边相邻陆地
if j - 1 >= 0 and grid[i][j - 1] == 1:
cover += 1
# 不统计下边和右边,避免重复计算

result = sum_land * 4 - cover * 2
print(result)

if __name__ == "__main__":
main()


```

### Go

```go

package main

import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)

func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := scanner.Text()

n, m := parseInput(line)

// 初始化 grid
grid := make([][]int, n)
for i := range grid {
grid[i] = make([]int, m)
}

// 读入 grid 数据
for i := 0; i < n; i++ {
scanner.Scan()
line := scanner.Text()
values := parseLine(line, m)
for j := 0; j < m; j++ {
grid[i][j] = values[j]
}
}

sum := 0 // 陆地数量
cover := 0 // 相邻数量

for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if grid[i][j] == 1 {
sum++ // 统计总的陆地数量

// 统计上边相邻陆地
if i-1 >= 0 && grid[i-1][j] == 1 {
cover++
}
// 统计左边相邻陆地
if j-1 >= 0 && grid[i][j-1] == 1 {
cover++
}
// 为什么没统计下边和右边? 因为避免重复计算
}
}
}

fmt.Println(sum*4 - cover*2)
}

// parseInput 解析 n 和 m
func parseInput(line string) (int, int) {
parts := strings.Split(line, " ")
n, _ := strconv.Atoi(parts[0])
m, _ := strconv.Atoi(parts[1])
return n, m
}

// parseLine 解析一行中的多个值
func parseLine(line string, count int) []int {
parts := strings.Split(line, " ")
values := make([]int, count)
for i := 0; i < count; i++ {
values[i], _ = strconv.Atoi(parts[i])
}
return values
}


```


### Rust

### Javascript
Expand Down

AltStyle によって変換されたページ (->オリジナル) /