科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何用SQL写出当M*N时的螺旋矩阵算法

如何用SQL写出当M*N时的螺旋矩阵算法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将为大家介绍如何用SQL写出当M*N时的螺旋矩阵算法。

作者:赛迪网 李丝 来源:天新网 2008年3月20日

关键字: 数据库 SQL Server Mssql SQL

  • 评论
  • 分享微博
  • 分享邮件
     1 12 11 10

   2 13 16 9

   3 14 15 8

   4 5 6 7

  SQL> -- 顺时针的

  SQL> select --i,

   2 sum(decode(j, 1, rn)) as co11,

   3 sum(decode(j, 2, rn)) as co12,

   4 sum(decode(j, 3, rn)) as co13,

   5 sum(decode(j, 4, rn)) as co14

   6 from (select i, j, rank() over(order by tag) as rn

   7 from (select i,

   8 j,

   9 -- 顺时针螺旋特征码 clockwise

   10 case least(i - 1, 4 - j, 4 - i, j - 1)

   11 when i - 1 then

   12 (i - 1) || '1' || j

   13 when 4 - j then

   14 (4 - j) || '2' || i

   15 when 4 - i then

   16 (4 - i) || '3' || (4 - j)

   17 when j - 1 then

   18 (j - 1) || '4' || (4 - i)

   19 end as tag

   20 from (select level as i from dual connect by level <= 4) a,

   21 (select level as j from dual connect by level <= 4) b))

   22 group by i

   23 /

   CO11 CO12 CO13 CO14

  ---------- ---------- ---------- ----------

   1 2 3 4

   12 13 14 5

   11 16 15 6

   10 9 8 7

  ---------------------------------------------------------  

  以上两种旋转都是由外向内的, 如果有兴趣也可以做成由内向外的。

  不过如果大家还要把结果90度旋转, 在顺序固定的情况下, 应该就是行列转换的问题了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章