非是非
Thinking, Express
|

测验题目

问题:
    矩阵式螺旋输出:
    
      1 16 15 14 13
      2 17 24 23 12
      3 18 25 22 11
      4 19 20 21 10
      5  6  7  8  9
    
    参考答案:
    <?php
    
    function n_at($N, $r, $c, $s=1){
     $v = 0;
    
     if($c==1){
       $v = $s + ($r-1);
     }else if($r==$N){
       $v = $s + ($N-1) + ($c-1);
     }else if($c==$N){
       $v = $s + ($N-1) + ($N-1) + ($N-$r);
     }else{
         $v = $s+($N-1)*3 + ($N-$c);
     }
     return $v;
    }
    
    function print_square($N){
      $o = ($N+1)/2;
      for($r=1; $r<=$N; $r++){
        for($c=1; $c<=$N; $c++){
          $n_loop  = max(abs($r-$o),abs($c-$o));
          $n_size  = $n_loop*2 + 1;
          $ir = ($r-$o) + ($n_size+1)/2;
          $ic = ($c-$o) + ($n_size+1)/2;
          $s = $N*$N - $n_size*$n_size+1;
          $v = n_at($n_size, $ir, $ic, $s);
          printf("%3d",$v);
        }
        print("\n");
      }
    }
    
    print_square(5);
    
    ?>
    非是非 | 联系 | 关于 | 向开发者捐赠 |

    版权所有 © 非是非, 2007~2015

    我觉得这个站点或页面: 有用 没用 有趣 无趣 有错 |