在做二维数组题时遇到了两道有相近的题目,题目如下(可以先看蛇形矩阵方便理解):

Zigzag输入n,(0 < n <= 20),建立n*n二维数组,按照下图规则(呈之字形,
即ZIGZAG排列)把1~n*n个数放在n*n二维数组中,然后按行优先顺序输出。1    2    6    7
3    5    8    13
4    9    12   14
10   11   15   16

先不说zigzag排列的作用,其实这就是以一种特殊的方式给矩阵赋值,通过观察数字规律可以发现:

1、数字不断以左下或者右上方向有规律递增
2、左下或者右上方向是交替进行的
知道这些基本上就能根据规律写出代码:我根据二维矩阵的坐标性质分为右半上角和左下半角赋值

看这坐标,(0,0)虽然只有一个,但我依然可以认为这是右上方向的,下一次则是左下方向,再下一次又是右上,所以可以定一个标志变量用于确定方向,坐标值在一个方向上也是递增或者递减,剩下的就是用双循环表达这个规律了,下半三角类似,具体看代码即可

#include <stdio.h>int main(int argc,const char*argv[])
{int i,j,cnt=0,zig[20][20],N,flag=0;//flag=0默认右上方向开始while(scanf("%d",&N)&&N!=0){cnt=1;flag=0;//上半三角for(i=0;i<N;i++){for(j=0;j<=i;j++){if(flag==1)zig[j][i-j]=cnt;  //往下,行递增,列递减elsezig[i-j][j]=cnt;  //往上,行递减,列递增cnt++;}if(flag==1) //下一次改变方向flag=0;elseflag=1;}//下半三角for(i=N-1;i>0;i--){for(j=0;j<i;j++){if(flag==1)zig[N-i+j][N-j-1]=cnt;  //往下,行递增,列递减elsezig[N-j-1][N-i+j]=cnt;  //往上,行递减,列递增cnt++;}if(flag==1) //下一次改变方向flag=0;elseflag=1;}for(i=0;i<N;i++)//遍历输出{for(j=0;j<N;j++){if(j<N-1)printf("%-3d ",zig[i][j]);elseprintf("%-3d",zig[i][j]);}printf("\n");}printf("\n");}return 0;}

随便找个数试试:

================================================
至于蛇形矩阵,明白了上面的原理就更加简单啦

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

可以看出每一行开始数字往右上递增,坐标规律为行递减,列递增

#include <stdio.h>int main(int argc,const char*argv[])
{int sak[100][100];int i,j,cnt,N;while(scanf("%d",&N)!=EOF){   cnt=1;for(i=0;i<N;i++)for(j=0;j<=i;j++){sak[i-j][j]=cnt;     //从(i,0)开始,行递减列递增 cnt++;}for(i=0;i<N;i++)   //输出 {for(j=0;j<N-i;j++){if(j!=N-i-1)printf("%d ",sak[i][j]);elseprintf("%d",sak[i][j]);}printf("\n");}}   return 0;}

Zigzag和蛇形矩阵相关推荐

  1. Acwing756. 蛇形矩阵:模拟

    文章目录 题目分析 题目链接 题目分析 所谓蛇形走位就是 螺旋形走位. 比如 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 模拟:需要知道4个偏移量,同时需要注意是顺时 ...

  2. wikioi 1160 蛇形矩阵

    /*======================================================================== 1160 蛇形矩阵 题目描述 Descriptio ...

  3. C语言实现上三角蛇形矩阵不用数组,C/C++编程笔记:C++ 嵌套循环,含循环打印及蛇形矩阵实例...

    也称为多循环,在一个循环中嵌套使用一个或多个循环. 嵌套循环的基本结构就是在一个循环中,循环体包含了另一个循环的情况.下面我用几个嵌套循环的例子来深入理解嵌套循环. 循环图案打印 分别打印下面三种图案 ...

  4. 方欣科技算法面试:蛇形矩阵2

    1 题目描述 /**  * 蛇形矩阵2  *   * 输入4  *   * 输出  *  1 12 11 10  *  2 13 16 9  *  3 14 15 8  *  4 5 6 7  *  ...

  5. 方欣科技算法题面试:蛇形矩阵

    1题目描述 样例输入 4 样例输出 1 3 6 102 5 9 4 8 7 2 java代码 //输入 //输入正整数N(N不大于100) // //输出 //输出一个N行的蛇形矩阵. // //样例 ...

  6. 用python编写杨辉三角金字塔_用python实现三道简单算法题:杨辉三角,蛇形矩阵,金字塔...

    分享几道简单的python打印输出的问题,本质上都是可以将其分解成一个大循环之中有几个小循环. 1.杨辉三角 主要特点: 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 每行端点与结 ...

  7. C语言实现上三角蛇形矩阵不用数组,蛇形矩阵c语言实现

    [问题描述]蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形.如: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 本题要求根据输入的行数要求,输出对应的一个蛇形上三角矩 ...

  8. 牛客网--蛇形矩阵(Java)

    题目描述 题目说明 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 接口说明 原型 void  ...

  9. zigzag模式提取矩阵元素

    zigzag模式提取矩阵元素 zouxy09@qq.com http://blog.csdn.net/zouxy09 这节博文只是为了上传个代码而已.希望对需要的人有用.zig-zag模式如下图所示. ...

最新文章

  1. 虚拟机删除后服务器内存,卸载虚拟机后仍占内存
  2. 从字母数字字符串中提取数字
  3. 宣告推出.NET Core 3.0 Preview 7
  4. 面试官:你说对MySQL事务很熟?那我问你10个问题
  5. iOS初级开发学习笔记:APP生命周期的学习总结
  6. Openssl证书管理
  7. 向eclipse中导入myeclipse项目
  8. HashMap--并发下死循环(HashMap不能在多线程下使用)
  9. html中心点缩放,html canvas 让物体随物体中心缩放
  10. 详解Java的交互式编程环境:jshell
  11. 3 个主流 Java 微服务框架,各有特色
  12. IntelliJ IDEA如何自动生成serialVersionUID?
  13. 机顶盒播放流媒体服务器的文件,IPTV机顶盒的流媒体播放器设计
  14. 手把手教你写 Word 版本PRD
  15. uniApp 生命周期【应用生命周期 和 页面生命周期】
  16. Keychron K7 Pro 轻薄矮轴机械键盘开箱体验
  17. Java解析OpenDrive,OpenDrive格式解析
  18. 关于福昕阅读器启动速度慢的问题
  19. NS3 Tutorial 中文版:第四章 概念概述
  20. 窗口置顶工具v2.4.0

热门文章

  1. SVN的安装和使用基础教程
  2. 关于登录时验证码无法显示
  3. 【工具】之DataX-Web简单介绍
  4. word批量修改交叉引用颜色
  5. win10安装visual studio2008
  6. 为App签名(为apk签名)
  7. 手把手教你如何批量修改视频尺寸
  8. MySQL 数据库连接
  9. 测试温度时共模电压的考虑
  10. 15.线程同步的几种方法