📅  最后修改于: 2023-12-03 15:27:11.680000             🧑  作者: Mango
本 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。