蛇形矩阵

蛇形矩阵,比如:

    1,2,3
    8,9,4
    7,6,5

要求输入3 输出1,2,3,8,9,4,7,6,5
PHP和JS分别试着解了下:

javascript:

    /*
      Created by licheng on 16/4/4.
      */

function snake(n){
function createMatrix(n) {
var matrix = new Array(n)
for (var i = 0; i < n; i++) {
matrix[i] = new Array(n)
}
return matrix
}

var matrix = createMatrix(n)
padding(matrix,n)
console.log(matrix.toString())

function padding(m,n){
var d = 1 // 控制填充方向,初始化向右(1) ,向下(2),向左(3) 向上(4)
var a = 0,//a,b为二维数组索引
b = 0,c = 1,// 方向改变变量,控制向右
i=1,//填充数字,从1到n*n
e = n,//控制改变方向的变量,控制向下
f=0 //方向改变变量,控制向左

 while(i<= n*n){
     if(d === 1){
         if(!m[a][b]){
             m[a][b] = i++
             b++
             if(b === e){
                 d = 2 //down
                 b--
                 a++
                 //console.log(a+'and'+b)

             }
         }else{
                e--
                a++ ;b++;
         }

     }else if(d === 2){
         if(!m[a][b]){
             m[a][b] = i++
             a++
             if(a === e){
                 d = 3 //left
                 b--
                 a--
             }
         }
     }else if(d === 3){
             if(!m[a][b]){
                 m[a][b] = i++
                 b--
                 if(b < f){
                     d = 4 //up
                     f++
                     a--
                     b++ //回到首位

                 }
             }
         }
         else if(d === 4){
             if(!m[a][b]){
               //  console.log(a+'and'+b)
                 m[a][b] = i++
                 a--
                 if(a<c){
                     c++
                     d = 1 //right
                 }
             }
         }
     }
 }

}
snake(3)

PHP

    PHP
/*
  Created by PHPStorm.
  User: licheng
  Date: 16/4/4
 Time: 下午5:57
 */
function snake($n){
function createMatrix($n) {
     $matrix = array();
    for ($i = 0; $i < $n; $i++) {
        $matrix[$i] = array() ;
    }
    return $matrix;
};

$matrix = createMatrix($n);

 function padding($m,$n){
  $d = 1 ;// right
  $a = 0; $b = 0;$c = 1;$i=1; $e = $n;$f=0 ;

 while($i<= $n*$n){
     if($d == 1){
         if(!$m[$a][$b]){
             $m[$a][$b] = $i++;
          //   var_dump($m);
             $b++ ;
             if($b == $e){
                 $d = 2; //down
                 $b--;
                 $a++ ;
             }
         }else{
             $e--;
                $a++ ;$b++;
         }

     }else if($d == 2){
         if(!$m[$a][$b]){
             $m[$a][$b] = $i++;
             $a++;
             if($a == $e){
                 $d = 3; //left
                 $b--;
                 $a--;
             }
         }
     }else if($d == 3){
         if(!$m[$a][$b]){
             $m[$a][$b] = $i++;
                 $b--;
                 if($b < $f){
                     $d = 4; //up
                     $f++;
                     $a--;
                     $b++ ;//回到首位

                 }
             }
         }
     else if($d === 4){
         if(!$m[$a][$b]){
             //  console.log(a+'and'+b)
             $m[$a][$b] = $i++ ;
             $a--;
                 if($a<$c){
                     $c++;
                     $d = 1; //right
                 }
             }
         }
 }
 return $m;
 };

$matrix= padding($matrix,$n);
for($x=0;$x<$n;$x++){
for($y=0;$y<$n;$y++){
echo $matrix[$x][$y].',';
}
}

}
snake(3);
?>

相关文章

这个问题和curl无法访问https资源是类似的,现在curl可以访问https资源,但是使用pecl安装扩展的时候不行...
在浏览器输入chrome://flags/回车,找到Omnibox UI Hide Steady-State URL Scheme and Trivial Subdoma...
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。...
中文的windows下的cmd默认使用GBK的编码,敲代码时,页面使用的是UTF-8(65001),而powershell控制台默认...
提示错误: arm-linux-gcc:Command not found PATH里有/usr/oca/arm/bin,但是make的时候,就是找不到 a...
我在Graph API开发中用的最多的测试工具就是Graph Explore,这个是微软开发的网页版的Graph API的测试工...