[数据结构]打印蛇型矩阵的程序设计

原创 2004年08月16日 01:07:00

在网上看到一位朋友问蛇型矩阵问题,便随手写了一个,也顺便在此谈谈设计方法。

蛇型矩阵的设计并不难,设计的关键在于找路线。一蛇型矩阵如下:

    1    2    9   10   25

    4    3    8   11   24

    5    6    7   12   23

   16   15   14   13   22

   17   18   19   20   21
我们把蛇型矩阵走的方向看成两条路线和两个跳线,数字1不看,路线1是从上向下再向左,如2-3-4和10-11-12-13-14-15-16,路线2是从左向右再向上,如5-6-7-8-9和17-18-9-20-...-25。跳线是连接两条路线路径,它是有特征的,跳线1是线路2转到线路1的“跳跃”,特征是列加一。而跳线2是线路1转到线路2的“跳跃”,特征是行加一。

由上分析,我们可以得出蛇型矩阵的走法是从a[0][0]开始,跳到线路1,跳到线路2,再跳到线路1……我们可以设可k为主对角线上的元素个数,用以限制行列标记i,j不越界。而跳线的设定,我们可以发现它是和k有关的。

附源程序如下:

/*
* Copyright (c) 2004,安徽大学02自动化专业
* All rights reserved.
*
* 文件名称:SnakeMatrix.c
* 文件标识:无
* 摘    要:打印蛇型矩阵
*
* 当前版本:1.0
* 作    者:Yu
* 完成日期:2004年8月16日
*
* 取代版本:1.0
* 原作者  :Yu
* 完成日期:2004年8月16日
*/
#include
#define N 10
void main()
{
 int a[N][N],tag = 1,i = 0,j = 0,num = 2,k;
 a[0][0] = 1;
 for (k = 1; k < N; k++)//k控制i和j的界限
 {
  if (k % 2 ==1)//线2跳线1
  {
   j++;
  }
  else//线1跳线2
  {
   i++;
  }
  switch (tag)
  {
  case 1://走线路一
   while (i <= k)
   {
    a[i][j] = num++;
    i++;
   }
   i--;
   j--;
   while (j >= 0)
   {
    a[i][j] = num++;
    j--;
   }
   j++;
   tag = 2;
   break;
  case 2://走线路二
   while (j <= k)
   {
    a[i][j] = num++;
    j++;
   }
   j--;
   i--;
   while (i >= 0)
   {
    a[i][j] = num++;
    i--;
   }
   i++;
   tag = 1;
   break;
  }
 }
 for (i = 0; i < N; i++)//输出结果
 {
  for (j = 0; j < N; j++)
   printf("%5d",a[i][j]);
  printf("/n/n");
 }
}

二维数组的“蛇形打印”输出

#include using namespace std; #define ROW 5 #define COL 5 void Show_Array(int ar[ROW][COL]) {fo...
  • panda_wx
  • panda_wx
  • 2017年12月05日 01:48
  • 12

ACM编程比赛入门题目之蛇形矩阵

蛇行矩阵 【问题描述】 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 【要求】 【数据输入】本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 【数据输出】对于每一组数据,...
  • Liuchang54
  • Liuchang54
  • 2014年12月06日 11:04
  • 1964

C++实现蛇形矩阵

C++实现蛇形矩阵昨天做了一道关于蛇形矩阵的算法题,觉得有点意思,下面记录一下我实现的过程。蛇形矩阵的意思,如图我的做法是创建一个动态二维数组,然后一层一层往内填数字:如上图,先是1-3,4-6,7-...
  • u014654002
  • u014654002
  • 2016年04月04日 18:12
  • 1021

浅谈玩蛇的姿势(Python入门)

关于技术壁垒: 破门而入简单, 翻墙而入艰难,前提是找到门的方向 很久以前就开始接触到Python, 光是基础就来来回回折腾了多次,总是感觉不得要领, 后来才渐渐的有点感觉。 在一些论坛上看到很多人提...
  • zhyj9493352669
  • zhyj9493352669
  • 2016年09月16日 12:47
  • 756

二维数组蛇形和Z形矩阵输出

1、蛇形矩阵输出   思路:就顺时针的矩阵为例,由矩阵外至内圈的数值是逐渐加1的,所以主要是找出值循环增加的规律,跟设定的圈数round有关,而round的取值范围为0 ...
  • Echo_Ana
  • Echo_Ana
  • 2016年11月30日 21:23
  • 1104

大数据 addthis hydra 九头蛇的学习 第一章

Hydra (九头蛇简介) Hydra(九头蛇),分布式任务处理系统,由社交标签服务提供商AddThis六年前开发,现在已得到Apache的开源许可,就像Hadoop一样,只是还没有Hadoop...
  • zxy2970
  • zxy2970
  • 2014年04月30日 12:39
  • 666

给定整数N,按要求输出Z字型矩阵

给定整数N,按要求输出如下Z字型矩阵(N*N):(2014-03北京某移动互联网公司面试题) 例如:N=4 输出: 要求:空间复杂度为O(N) #include u...
  • u014082714
  • u014082714
  • 2015年04月10日 08:26
  • 1540

华为OJ题库-C++实现蛇形矩阵

题目说明蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211 知识点 数组 运行时间限制 10...
  • u012618247
  • u012618247
  • 2015年09月04日 17:38
  • 1840

LinkedList的使用——控制台输出贪吃蛇游戏

首先写一个节点类Node(),定义贪吃蛇的所有行走路线路过的点。 定义横竖坐标 ( i , j ), 生产get() 和 set() 方法,定义一个空的构造方法和一个带参构造方法,重写haseCod...
  • qq_26944753
  • qq_26944753
  • 2015年09月09日 22:27
  • 446

贪吃蛇之智能蛇

相信很多人都玩过贪吃蛇这个游戏,几乎在我们的手机里都有这个游戏,今天我们就来简单地谈谈二代贪吃蛇——智能蛇。 之所以叫它智能蛇是因为它能够找到最短的距离去吃到食物,当然,它的智慧是程序员赋予的,接下...
  • gao15012211596
  • gao15012211596
  • 2017年12月25日 21:59
  • 420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[数据结构]打印蛇型矩阵的程序设计
举报原因:
原因补充:

(最多只允许输入30个字)