• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言实现生成n阶顺时针循环矩阵

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    自从看了清华尹成写了这么多博文,心中明白了一个道理猥琐男尹神成为大牛是有原因的。

所以想成为大牛先从模仿大神博文习惯开始。

    今天在CSDN上写第一篇博文《Go语言实现生成n阶循顺时针环矩阵》

如下图说明:

代码:

package main

import "strconv"

func main() {

   n := 10
   var rect [9999][9999]int  //这里 9999是先声明一个二维数组空间  这里代码不完美,如果n>=9999这里就不对了

   x := 0
   y := 1 // 当前遍历的位置
   px := 1
   py := 0 // x/y 在当前循环方向的增量
   var pn int
   pn = n // 该方向上还需要多少个数字(会递减,因为顺时针往里缩)
   var sum int
   sum = n // 当前遍历方向的终点位置

   /** 目标输出顺时针 */
   // 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

   /** 翻转矩阵为逆时针(为了便于后面逻辑处理,输出的时候再翻转回去) */
   // 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

   for i := 1; i <= n*n; i++ {
      // 翻转矩阵循环
      // 移到下一个点(第一次方向1->5 x增量为1, y的增量为0, 第二次方向为6->9,x增量为0,y增量为1,pn减少一个)
      x += px
      y += py
      rect[x][y] = i
      if i == sum { // 到达该方向的最后一个点
         if px == 1 || px == -1 { // x的增量不为0,则为竖向 -> 横向
            pn = pn - 1 // 竖向变为横向的时候,该方向上数字的个数会减少一个
            sum = sum + pn
            py = px
            px = 0
         } else { // x的增量为0, y的增量不为0,则为横向 -> 竖向
            sum = sum + pn
            px = -py
            py = 0
         }
      }
   }

   for i := 1; i <= n; i++ {
      for j := 1; j <= n; j++ {
         print(strconv.Itoa(rect[j][i]) +"  ") //strconv.Itoa 将int类型转为字符串 翻转复原输出
      }
      println("")
   }
}

输出结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go环境搭建问题:Thesystemcannotfindthefilespecifie发布时间:2022-07-10
下一篇:
Go Micro Dashboard - 简介发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap