📅  最后修改于: 2023-12-03 15:28:37.572000             🧑  作者: Mango
本篇文章介绍2011年计算机科学门考试中第42章的相关内容。
本题目为一个计算机科学考试题目,要求考生运用自身的程序设计知识来解决问题。
给定一个n x n的方阵,其中包含0和1。仅当所有的1周围(上下左右或对角线)都是0时,才被视作孤立的1。找到所有孤立的1并输出它们所在的行和列。
5
1 0 0 1 0
0 1 0 0 0
0 0 0 1 0
1 0 1 0 0
0 0 0 0 1
(2 2)
(3 4)
(5 5)
本题目要求寻找所有孤立的1,可以依次扫描整个矩阵,若遇到1,则检查其周围是否存在1,若不存在,则证明它是一个孤立的1。同时需要记录下来每个孤立的1所在的行和列,最后输出即可。
以下是Python语言的实现:
n = int(input())
matrix = []
for i in range(n):
row = list(map(int, input().split()))
matrix.append(row)
isolated = [] # 记录孤立的1所在行和列
for i in range(n):
for j in range(n):
if matrix[i][j] == 1:
flag = True # 标记该1是否为孤立的
if i > 0 and j > 0 and matrix[i-1][j-1] == 1:
flag = False
if i > 0 and matrix[i-1][j] == 1:
flag = False
if i > 0 and j < n-1 and matrix[i-1][j+1] == 1:
flag = False
if j > 0 and matrix[i][j-1] == 1:
flag = False
if j < n-1 and matrix[i][j+1] == 1:
flag = False
if i < n-1 and j > 0 and matrix[i+1][j-1] == 1:
flag = False
if i < n-1 and matrix[i+1][j] == 1:
flag = False
if i < n-1 and j < n-1 and matrix[i+1][j+1] == 1:
flag = False
if flag:
isolated.append((i+1, j+1))
for item in isolated:
print('(%d %d)' % item)
本题考查了程序员的数组遍历和查找能力。在解题过程中,需要注意边界问题和代码的简洁性。