📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 33(1)

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

国际空间研究组织 | ISRO CS 2017 |问题 33

简介

国际空间研究组织(Indian Space Research Organisation,ISRO)是印度的一家官方空间研究机构,成立于1969年。其使命是为印度的国家利益和发展服务,通过现代化的技术实现科技发展,探索宇宙之谜,推广科学知识,提高国家的技术能力,以利于经济和社会发展。

ISRO CS 2017是ISRO为提高其员工技能而组织的一次内部考试,题目集中在计算机科学方面。

问题描述

问题33要求完成一个名为"Pattern"的Java类,该类的功能是根据输入的行数和列数输出一个指定的图案。以下是详细要求:

给定一个整数N,表示图案中的行数和列数。画出一个规模为NxN的矩形。矩形由数字1和0组成。1矩形的角落和中心,0矩形的边和其他区域。

例如,N=3时,输出如下:

111
101
111

再例如,N=5时,输出如下:

11111
10001
10101
10001
11111
解题思路

该问题要求输出一个规模为NxN的矩形,并且矩形由数字1和0组成,因此,我们应该用一个二维数组来存储矩形,并用两个循环来填充它。我们可以考虑将矩形分解成若干个正方形,一个正方形的每行和每列都是奇数,中心是1,其它位置为0,然后组合成一个完整的矩形。

为了方便构建正方形,我们可以定义一个函数square,该函数的功能是构建一个规模为N的正方形,并填充到矩形的指定位置。构建正方形的过程比较简单,可以定义两个变量row和col来遍历正方形的每行和每列,然后判断(row+col)%2是否等于0,如果是则填充1,否则填充0。

代码实现

下面是Pattern类的代码实现,其中包括一个square函数和一个main函数。该程序用Java语言编写,可以直接使用Java编译器进行编译。

public class Pattern {

    public static void square(int[][] arr, int row, int col, int n) {
        for (int i = row; i < row+n; i++) {
            for (int j = col; j < col+n; j++) {
                if ((i-row+j-col)%2 ==0)
                    arr[i][j] = 1;
                else
                    arr[i][j] = 0;
            }
        }
    }

    public static void main(String[] args) {
        int n = 3; // 矩阵的行和列数
        int[][] arr = new int[n][n];

        // 构建正方形
        for (int i = 0; i < n/2+1; i++) {
            square(arr, i, i, n-2*i);
        }

        // 打印矩形
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(arr[i][j]);
            }
            System.out.println();
        }
    }
}
测试数据

为了验证程序的正确性,可以使用以下测试数据:

输入:n=3 输出:

111
101
111

输入:n=5 输出:

11111
10001
10101
10001
11111

输入:n=7 输出:

1111111
1000001
1010101
1001001
1010101
1000001
1111111
参考资料

ISRO CS 2017