Files
CS412-Applied-Algorithms/Basic-Graphs/cs412_islands_a.py

69 lines
1.4 KiB
Python
Raw Normal View History

"""
name: Nicholas Tamassia
Honor Code and Acknowledgments:
This work complies with the JMU Honor Code.
Comments here on your code and submission.
"""
2025-10-14 08:20:28 -04:00
def explore_island(grid: list[list[int]], start: tuple[int, int]) -> int:
n: int = len(grid)
size: int = 0
def recurse(coord: tuple[int, int]):
x, y = coord
if grid[y][x] == 0:
return
nonlocal size
size += 1
grid[y][x] = 0
neighbors: list[tuple[int, int]] = []
if y > 0:
neighbors.append((x, y - 1))
if y < n - 1:
neighbors.append((x, y + 1))
if x > 0:
neighbors.append((x - 1, y))
if x < n - 1:
neighbors.append((x + 1, y))
for neighbor in neighbors:
recurse(neighbor)
recurse(start)
return size
# All modules for CS 412 must include a main method that allows it
# to imported and invoked from other python scripts
def main():
n: int = int(input())
matrix: list[list[int]] = [list(map(int, input().split())) for _ in range(0, n)]
2025-10-14 08:20:28 -04:00
largest_island: int = -1
for y in range(0, n):
for x in range(0, n):
if matrix[y][x] == 0:
continue
island_size: int = explore_island(matrix, (x, y))
if island_size > largest_island:
largest_island = island_size
print(largest_island)
if __name__ == "__main__":
main()