📜  门| GATE CS 2011 |第42章(1)

📅  最后修改于: 2023-12-03 15:28:37.572000             🧑  作者: Mango

门 | GATE CS 2011 | 第42章

本篇文章介绍2011年计算机科学门考试中第42章的相关内容。

1. 题目简介

本题目为一个计算机科学考试题目,要求考生运用自身的程序设计知识来解决问题。

2. 题目要求

给定一个n x n的方阵,其中包含0和1。仅当所有的1周围(上下左右或对角线)都是0时,才被视作孤立的1。找到所有孤立的1并输出它们所在的行和列。

3. 样例输入输出
输入
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)
4. 解题思路

本题目要求寻找所有孤立的1,可以依次扫描整个矩阵,若遇到1,则检查其周围是否存在1,若不存在,则证明它是一个孤立的1。同时需要记录下来每个孤立的1所在的行和列,最后输出即可。

5. 代码实现

以下是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)
6. 总结

本题考查了程序员的数组遍历和查找能力。在解题过程中,需要注意边界问题和代码的简洁性。