问题:

框架矩阵示例:

框架矩阵示例:

标有字母C的元素表示内部矩阵.

用字母B标记的元素构成其成员用字母C标记的矩阵的外围框架, 用字母A标记的元素构成了其元素用字母B标记的矩阵的外围框架 和C.

如果一个矩阵的所有标有相同字母的元素(A、B、C等)都包含相同的值,则该矩阵称为"框架矩阵".一般的正规框架矩阵可以是任何大小.

带有数值的带框架矩阵的示例:

带有数值的带框架矩阵的示例:

我需要编写一个Java函数,该函数将矩阵作为参数接收,如果矩阵是成帧的,则返回TRUE 如果不是,则为假.

谢谢你的帮助

我写了一个函数,如果外层包含相同的值(第一行和最后一行,第一列和最后一列),则返回true,我还需要判断内层.

这是我的部分解决方案:

      public static boolean isFrameMatrix(int matrix[][])
  {
      int A = matrix[0][0];
      int rows = matrix.length;
      int cols = matrix[0].length;
      
    
      int i=0 ,j = 0;
      
      //Check the first and last rows
      for(j=0; j<cols; j++)
      {
          if(A != matrix[0][j] || A != matrix[rows-1][j]) return false;
      }
      
      //Check the first and last columns
      for(i = 0; i<rows; i++)
      {
          if(matrix[i][0] != A || matrix[i][cols-1] != A) return false;
      }
      
      return true;

  }

推荐答案

在当前代码中使用索引0rows-1(或cols-1)时,请使用考虑您正在查看的帧的表达式.帧的数量由矩阵的宽度和高度的最小值和一半(向上四舍五入)确定.例如,5x7矩阵具有(5+1)/2帧,即3

以下是如何实现这一点的方法:

    public boolean isFrameMatrix(int[][] matrix) {
        int height = matrix.length;
        int width = matrix[0].length;

        for (int frame = (Math.min(width, height) + 1) / 2; frame >= 0; frame--) {
            int value = matrix[frame][frame];
            for (int col = frame + 1; col < width - frame; col++) {
                if (matrix[frame][col] != value || 
                        matrix[height - 1 - frame][col] != value) {
                    return false;
                }
            }
            for (int row = frame + 1; row < height - frame; row++) {
                if (matrix[row][frame] != value || 
                        matrix[row][width - 1 - frame] != value) {
                    return false;
                }
            }
        }
        return true;
    }

Java相关问答推荐

使用意向过滤器从另一个应用程序启动服务

RESTful框架类字段是安全的还是不安全的

Spring Boot Maven包

蒙蒂霍尔比赛结果不正确

放气总是压缩整个街区吗?

Com.example.service.QuestionService中的构造函数的参数0需要找不到的类型为';com.example.Dao.QuestionDao;的Bean

在执行流和相关操作时,使用Java泛型为2个方法执行相同的操作,但对象不同

在Oracle JDBC连接中,连接失效和身份验证失效是什么意思?

如何在EL处理器中定义带有命名空间的变量?

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

用于Java的Visual Studio代码完成不起作用

为什么使用lo索引来解决二进制搜索问题不同于使用hi索引?

Cucumber java-maven-示例表-未定义一步

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

org.springframework.web.HttpRequestMethodNotSupportedException:请求方法';帖子';不支持

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

Java 21保护模式的穷尽性

java.exe如何执行java源代码?

如何在 Android Studio 中删除 ImageView 和屏幕/父级边缘之间的额外空间?

JAVA 正则表达式识别字符串string或字符串内的字符char