博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数据结构]打印蛇型矩阵的程序设计
阅读量:3984 次
发布时间:2019-05-24

本文共 1170 字,大约阅读时间需要 3 分钟。

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

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

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

转载地址:http://vmpui.baihongyu.com/

你可能感兴趣的文章
关于WebClient超时问题
查看>>
创业公司如何与巨头竞争?利用好这9大优势是关键
查看>>
读书 | 如何像沉迷游戏一样对工作上瘾?
查看>>
如何确保自己的Mac数据安全呢?这里有四个“小秘诀”
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
第一性原理:戳中问题本质的人是怎么思考的?
查看>>
No.147 - LeetCode1108
查看>>
No.148 - LeetCode771
查看>>
No.172 - LeetCode1301
查看>>
No.173 - LeetCode1304
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.177 - LeetCode1310
查看>>
No.178 - LeetCode1311
查看>>
Mac:终端实用快捷键
查看>>
FE:http状态码
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
No.183 - LeetCode1324
查看>>
mac:移动python包路径
查看>>