阅读模式:

php数组求对角线之和

查看:1321  :0  类型:  来源:php自学网  标签 php 算法

        php3×3二维数组[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],它的对角线值为(1,5,9)和(3,5,7),对角线相加和为1+5+9+3+7 = 25。然而在计算的时候要如何找到这些数字并相加呢?

一、3×3数组求对角线之和

1                       2                   3 

[0][0]            [0][1]                [0][2] 


4                       5                   6 

[1][0]            [1][1]               [1][2] 


7                      8                     9 

[2][0]           [2][1]                [2][2]


通过规律发现,它们的坐标:[0][0]、[1][1]、[2][2]、[0][2]、[1][1]、[2][0] ,x+y正好能被2整除。即公式为:(i+j)%2==0,最后通过遍历数组,对坐标进行判断,就能得出结果。

示例代码:

<?php
$arr = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];
$sum = 0;
for ($i = 0; $i < count($arr); $i++) {
    for ($j = 0; $j < count($arr[$i]); $j++) {
        if(($i+$j)%2 ==0){
            $sum += $arr[$i][$j];
        }
    }
}
echo '数组对角线和为:' . $sum;
// 数组对角线和为:25

二、3×3对角线之和(不去除相交数)

    它的对角线值为(1,5,9)和(3,5,7),对角线相加和为1+5+9+3+5+7 = 30

<?php
$arr = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];
$sum = 0;
for ($i = 0; $i < count($arr); $i++) {
    for ($j = 0; $j < count($arr[$i]); $j++) {
        if ($i == $j) {
            $sum += ($arr[$i][$j] + $arr[$i][2-$i]);
        }
    }
}
echo '数组对角线和为:' . $sum;
// 数组对角线和为:30
分享到:
2 10

我的看法:

IN: