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

原创 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");
 }
}

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

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

算法-蛇型矩阵

蛇形方陈 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 输入 直...
  • zhangpengyu321
  • zhangpengyu321
  • 2012-11-14 17:56:57
  • 559

(C#)打印蛇形正方形矩阵

/* * (C#)打印蛇形正方形矩阵, 如: * 1 2 3 * 8 9 4 * 7 6 5 */ using System; using System.Collections...
  • chenglin1986
  • chenglin1986
  • 2010-12-08 00:35:00
  • 1357

c#螺旋矩阵加蛇形矩阵

  • 2011年12月28日 13:09
  • 41KB
  • 下载

打印回型数组-回型矩阵-环形数组

算法的主要流程就是模拟回型矩阵生成过程,也相当于对每个格子进行编号。...
  • wyg1065395142
  • wyg1065395142
  • 2016-09-01 22:30:06
  • 1656

打印回形矩阵

打印一个回形矩阵如下 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 #include //当n=4时,分别打印1-3, 4-6, 7-9, 10-12,...
  • richrdbird
  • richrdbird
  • 2016-04-04 10:41:46
  • 1370

打印回形矩阵(C实现)

用C实现回形矩阵的打印
  • XIYOU23
  • XIYOU23
  • 2015-10-21 22:17:56
  • 1571

c语言实现输出二维蛇形矩阵

c语言实现输出二维蛇形矩阵
  • baidu_35534327
  • baidu_35534327
  • 2016-11-30 23:36:09
  • 2793

蛇形矩阵的java实现

题目: 计算并输出 nXn 的蛇形矩阵。(n>0) 例如 4X4 的蛇形矩阵如下: 1   3   4  10 2   5   9  11 6   8  12  15 7  13  14 ...
  • zhang434
  • zhang434
  • 2013-10-19 23:35:41
  • 1372

Kata系列之回型矩阵: 用java代码打印出“回”字形矩阵

回型矩阵: 用java代码打印出“回”字形矩阵,例如1-9的三阶矩阵的输出顺序为:1 2 3 8 9 4 7 6 5...
  • huawangxin
  • huawangxin
  • 2017-02-22 14:28:03
  • 964
收藏助手
不良信息举报
您举报文章:[数据结构]打印蛇型矩阵的程序设计
举报原因:
原因补充:

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