今天遇到的一份面試題

來源:互聯網
上載者:User
今天遇到的一份面試題,求高手指教
題目要求是寫一個函數,輸入一個數字n,然後函數就輸出一個n行n列的數陣,數陣樣式舉例如下:

n=3
-------------------
1 2 3
8 9 4
7 6 5

n=4
-------------------
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

n=5
-------------------
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

嗯,大致就是這麼著,繞著圈子排序


→→→→┐
┌→→┐↓
↑┌→↓↓
↑└←┘↓
└←←←┘

-------------------
有木有高手做出來? 0.0

------解決方案--------------------
PHP code
function Circle($n) {  $k = $n % 2;  $ar = array();  for($i=0; $i<$n; $i++)    $ar[$i] = array_fill(0, $n, 0);  $p = 1;  $x = 0;  $y = 0;  $m = 0;  $len = $n * $n;  while($p < $len) {    $x = $y = $m;    while($x < $n) $ar[$y][$x++] = $p++;    $x--;    $y++;    while($y < $n) $ar[$y++][$x] = $p++;    $y--;    $x--;    while($x >= $m) $ar[$y][$x--] = $p++;    $x++;    $y--;    $m++;    while($y >= $m) $ar[$y--][$x] = $p++;    $n--;  }  if($k) $ar[$y+1][$x+1] = $p;  $r = '';  foreach($ar as $v)    $r .= '';  return $r.'
' . join('', $v) . '
'; }for($i=2;$i<30;$i++){ $html .= Circle( $i ); $html .=''; } ?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.