📌  相关文章
📜  用于检查二进制矩阵中水平和垂直对称性的 PHP 程序(1)

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

用于检查二进制矩阵中水平和垂直对称性的 PHP 程序

本 PHP 程序用于检查二进制矩阵(由 0 和 1 构成的矩阵)中是否存在水平或垂直对称性。程序以二维数组形式输入二进制矩阵,返回一个布尔值表示是否存在对称性。

代码实现
/**
 * 检查二进制矩阵中是否存在水平或垂直对称性
 * @param array $matrix 二进制矩阵
 * @return bool 是否存在对称性
 */
function check_symmetry(array $matrix): bool {
    // 检查水平对称性
    $rows = count($matrix);
    for ($i = 0; $i < $rows / 2; $i++) { // 遍历上半部分
        if ($matrix[$i] !== array_reverse($matrix[$rows - $i - 1])) {
            return false;
        }
    }

    // 检查垂直对称性
    $cols = count($matrix[0]);
    for ($i = 0; $i < $cols / 2; $i++) { // 遍历左半部分
        $col = array_column($matrix, $i);
        if ($col !== array_reverse(array_column($matrix, $cols - $i - 1))) {
            return false;
        }
    }

    // 若遍历完仍未返回 false,则存在对称性
    return true;
}
使用方法
// 测试用例
$matrix1 = [
    [0, 0, 1],
    [1, 0, 1],
    [1, 0, 0],
];
$matrix2 = [
    [0, 1, 1],
    [1, 0, 1],
    [1, 0, 0],
];

var_dump(check_symmetry($matrix1)); // true
var_dump(check_symmetry($matrix2)); // false
解析

本程序分别检查二进制矩阵的水平和垂直对称性。

检查水平对称性时,将矩阵上半部分与下半部分对称比较。

检查垂直对称性时,将矩阵左半部分与右半部分对称比较。

若矩阵中存在对称性,则返回 true;否则返回 false。