蛇形三角矩阵

Problem
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

Input
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

Output
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。

矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

Sample Input
5

Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11




#include "stdafx.h"
#include <iostream>
using namespace std;
//由于题目要求N小于100,故设定一个常量,值为15
#define EDGE 15


//蛇形矩阵的扩展实现
int main(int argc, char* argv[])
{
int a[EDGE][EDGE];
//根据蛇形矩阵的规律,对其进行赋值
for(int i=0;i<EDGE;i++)
{
for(int j=0;j<EDGE;j++)
{
a[0][0]=1; //a[0][0]无法有前驱求得
if(j>=EDGE-i) //左上三角的特征j<i
a[i][j]=0;
else if(j==0) //先确定第一列,后面的数都与第一行以及所在的行序、列序有关
a[i][j]=a[i-1][j]+i;
else a[i][j]=a[i][j-1]+i+j+1;
}
}
//输出蛇形矩阵
for(i=0;i<EDGE;i++)
{
for(int j=0;j<EDGE;j++)
{
if(a[i][j]==0)cout<<"";
else cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}

				
时间: 2024-10-15 19:48:09

蛇形三角矩阵的相关文章

13.高斯消去法(2)——三角矩阵

对于矩阵有一类特殊的矩阵,叫做三角矩阵. 这种矩阵如果还是按照定义一个二维数组来对数值进行存储的话,无疑将消耗掉不必要的空间,所以我们采用压缩存储的方式,将矩阵存储在一位数组中. 对于下三角矩阵,如果按照行优先存储,则{a11, a21, a22, a31, a32, a33, a41, a43, a44},一维数组容量为10,即4 * ( 4 + 1) / 2 => n * ( n + 1 ) / 2,aij所在数组下标为:k = i * ( i - 1 ) / 2 + j - 1. 对于上三

三角矩阵怎么用MathType输入

虽然现在已经是暑假,但还是有很多学霸们在炎炎夏日中努力奋战,连暑假都不放过.也许正在实验室里面做得昏天暗地,也许是正在跟数据努力奋战,也许还在办公室里面一点一点地码着论文.码论文的时候,不时地要敲着复杂的公式,但这些公式并不是一个两个,也不是一个符号两个符号就能够搞定的,做好了实验,分析好了数据,会码不好公式,这绝对不应该是一个学霸成长路上的拦路虎!下面就来介绍几个学霸们码公式时常用的小技巧. 首先,在码公式的时候,学霸们会先选择下载安装一个MathType公式编辑器.MathType公式编辑器

算法题:蛇形打印矩阵

1 // Snake.cpp : print matric(n*n). 2 //////////// n=3: 3 // 1 2 6 4 // 3 5 7 5 // 4 8 9 6 //////////// n=4: 7 // 1 2 6 7 8 // 3 5 8 13 9 // 4 9 12 14 10 // 10 11 15 16 11 12 #include "stdafx.h" 13 #include "vector" 14 #include "d

matlab中怎样由上已知的三角矩阵或下三角矩阵构建对称矩阵??

方法:先将对角元素全部置为0,然后将上三角矩阵或下三角矩阵进行转置,最后进行两个矩阵相加,再填充对角元素: 1 >> a=[0,1,2;0,0,3;0,0,0]; 2 >> a 3 4 a = 5 6 0 1 2 7 0 0 3 8 0 0 0 9 >> a=a+a'; 10 >> a 11 12 a = 13 14 0 1 2 15 1 0 3 16 2 3 0

打印三角矩阵

不用数组打印 N=3 对应到一个3*3的矩阵: 1 2 3 4 5 6 7 8 9 斜45度遍历得到: 3 2 6 1 5 9 4 8 7 input: N output:如上的三角形数字 package Array; import java.util.Scanner; /** * Created by zdmein on 2018/3/6. */ public class Bianli45 { public static void main(String [] args){ //输入数据,转变

队列堆栈和数组-三角矩阵

#include<iostream> #include <iomanip> using namespace std; enum TriangleTye{leftBottom,leftUp,rightBottom,rightUp}; struct TriangleMatrix { int* nums; int scale; TriangleTye triangleTye; int size; }; TriangleMatrix* createTriangleMatrix(int sc

数组之三种矩阵

文字描述 矩阵的压缩:对于某些特殊的矩阵来说,非零元素较少,大部分元素为0,采用某种算法,将非零元素存储在一位数组里以达到节省存储空间的目的的过程,称为矩阵的压缩   矩阵的还原:将压缩后的数组还原成原始矩阵的过程 1.对角矩阵 ①矩阵介绍 所谓对角矩阵: 矩阵中的所有非零元素都集中在以主对角线为中心的带状区域中,   即除了主对角线上和直接在主对角线上下若干条对角线上的元素外,其余元素均为零.   这样的矩阵称为半带宽为d的带状矩阵,带宽是2*d+1,d为直接在对角线上下方不为0的对角线数 ②

矩阵相关知识

§1 矩阵及其运算 教学要求 : 理解矩阵的定义.掌握矩阵的基本律.掌握几类特殊矩阵(比如零矩阵,单位矩阵,对称矩阵和反对称矩阵 ) 的定义与性质.注意矩阵运算与通常数的运算异同.能熟练正确地进行矩阵的计算. 知识要点 : 一.矩阵的基本概念 矩阵,是由 个数组成的一个  行 列的矩形表格,通常用大写字母  表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素  表示,其中下标  都是正整数,他们表示该元素在矩阵中的位置.比如, 或 表示一个 矩阵,下标 表示元素  位于该矩阵的第 

矩阵的基本运算,相乘,逆,转置,伴随

1 矩阵基本操作 1.1创建向量 R里面有多种方法来创建向量(Vector),最简单的是用函数c().例如: >X=c(1,2,3,4) >X [1] 1 2 3 4 当然,还有别的方法.例如: >X=1:4 >X [1] 1 2 3 4 还有seq()函数.例如: > X=seq(1,4,length=4) > X [1] 1 2 3 4 注意一点,R中的向量默认为列向量,如果要得到行向量需要对其进行转置. 1.2创建矩阵 R中创建矩阵的方法也有很多.大致分为直接创建