You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断矩阵是否为框架矩阵?Java函数实现求助

判断框架矩阵的Java函数实现

问题定义

框架矩阵是由多层嵌套框架构成的矩阵,需满足以下规则:

  • 最外层框架的所有元素值相同(标记为A)
  • 内层每一层框架的所有元素值也各自统一(标记为B、C等)
  • 支持任意大小和多层嵌套结构

示例结构:
框架矩阵示例
数值型框架矩阵示例

当前已实现外层框架的检查逻辑,需补充内层框架的验证逻辑以完成完整判断。

解决方案

采用递归方式逐层验证每一层框架,代码实现如下:

public static boolean isFrameMatrix(int[][] matrix) {
    // 处理空矩阵或无效矩阵
    if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
        return false;
    }
    
    int rows = matrix.length;
    int cols = matrix[0].length;
    
    // 1x1矩阵直接符合框架矩阵要求
    if (rows == 1 && cols == 1) {
        return true;
    }
    
    int currentFrameVal = matrix[0][0];
    
    // 检查首行和末行的所有元素
    for (int j = 0; j < cols; j++) {
        if (matrix[0][j] != currentFrameVal || matrix[rows - 1][j] != currentFrameVal) {
            return false;
        }
    }
    
    // 检查首列和末列的中间元素(跳过首尾行已检查的元素)
    for (int i = 1; i < rows - 1; i++) {
        if (matrix[i][0] != currentFrameVal || matrix[i][cols - 1] != currentFrameVal) {
            return false;
        }
    }
    
    // 若存在内层矩阵,递归验证
    if (rows > 2 && cols > 2) {
        int[][] innerMatrix = new int[rows - 2][cols - 2];
        for (int i = 1; i < rows - 1; i++) {
            System.arraycopy(matrix[i], 1, innerMatrix[i - 1], 0, cols - 2);
        }
        return isFrameMatrix(innerMatrix);
    }
    
    // 无内层矩阵,当前层验证通过
    return true;
}

逻辑说明

  1. 边界处理:先过滤空矩阵、单行/单列无效矩阵,1x1矩阵直接判定为符合要求
  2. 外层验证:遍历首行、末行所有元素,以及首列、末列的中间元素,确保当前层框架值统一
  3. 递归内层:当矩阵尺寸大于2x2时,提取去掉首尾行/列后的内层子矩阵,递归调用函数验证内层是否符合框架要求
  4. 终止条件:当无法拆分出内层矩阵时,说明所有外层均验证通过,返回true

内容的提问来源于stack exchange,提问作者Nuevo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:15:06