关于一道magic square题的解法


function magicsquare($n) {
    
    if ($n == 0) {
        $s[0] = array(8,1,6);
        $s[1] = array(3,5,7);
        $s[2] = array(4,9,2);
    }
    
    if ($n == 1) {
        $s[0] = array(6,1,8);
        $s[1] = array(7,5,3);
        $s[2] = array(2,9,4);
    }
    
    if ($n == 2) {
        $s[0] = array(4,9,2);
        $s[1] = array(3,5,7);
        $s[2] = array(8,1,6);
    }
    
    if ($n == 3) {
        $s[0] = array(2,9,4);
        $s[1] = array(7,5,3);
        $s[2] = array(6,1,8);
    }
    
    if ($n == 4) {
        $s[0] = array(8,3,4);
        $s[1] = array(1,5,9);
        $s[2] = array(6,7,2);
    }
    
    if ($n == 5) {
        $s[0] = array(4,3,8);
        $s[1] = array(9,5,1);
        $s[2] = array(2,7,6);
    }
    
    if ($n == 6) {
        $s[0] = array(6,7,2);
        $s[1] = array(1,5,9);
        $s[2] = array(8,3,4);
    }
    
    if ($n == 7) {
        $s[0] = array(2,7,6);
        $s[1] = array(9,5,1);
        $s[2] = array(4,3,8);
    }
    
    return $s;
}
    
$_fp = fopen("php://stdin", "r");
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
fscanf($_fp, "%d %d %d", $s[0][0], $s[0][1], $s[0][2]);
fscanf($_fp, "%d %d %d", $s[1][0], $s[1][1], $s[1][2]);
fscanf($_fp, "%d %d %d", $s[2][0], $s[2][1], $s[2][2]);

$diff = 0;
for ($r=0;$r<8;$r++) {
    $ms = magicsquare($r);
    $sdiff = 0;
    for ($i=0;$i<3;$i++) {
        for ($j=0;$j<3;$j++) {
            //echo $ms[$i][$j]."-".$s[$i][$j]."\n";
            $sdiff += abs($ms[$i][$j]-$s[$i][$j]);
        }
    }
    //echo $sdiff."\n";
    if ($r==0) {
        $diff = $sdiff;
    } else if ($diff>$sdiff) {
        $diff = $sdiff;
    }
}

echo $diff;

 

转载于:https://my.oschina.net/lilugirl2005/blog/1646938

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值