echo "1 3 6 10<br>
2 5 9 13<br>
4 8 12 15<br>
7 11 14 16 ";

解决方案 »

  1.   

    $a=array();$b=array();$n=1;$r=0;$s=1;$d=1;
    $size=4;
    while($n<=16){
      $t=array();  for($i=0;$i<$s;$i++){
        $t[$i]=$n;    $n++;
        if($n>16) break;
      }  $s+=$d;
      if($s==$size) $d=-1;  array_push($a,$t);
      if($n>16) break;
    }
    //////////////////////////////////////////////////////////
    $x=0;$y=0;$d=$size;
    for($i=0;$i<$size;$i++){  $y=$i;
      $x=0;
      for($j=0;$j<$size;$j++){
        echo $a[$y][$x].',';
        $y++;    if($x<$d+1)
           $x++;
        $d--;
      }
      echo '<br>';
    }
      

  2.   

    $size=4;
    $c=$size;$a=array();$n=1;
    for($i=0;$i<$size;$i++){

    $a[$i][0]=$n;
    for($j=1;$j<$c;$j++){
    $a[$i][$j]=$a[$i][$j-1]+$j+$i+1;
    }
    for($j=$c;$j<$size;$j++){
    $a[$i][$j]=$a[$i][$j-1]+$size-$j+$c;
    }
    $c--;
    $n+=$i+1;
    }for($i=0;$i<$size;$i++){
    for($j=0;$j<$size;$j++)
    echo $a[$i][$j].',';
    echo '<br>';
    }前一种方法好像还有错