三角矩阵

1125 上三角矩阵的判断

谁都会走 提交于 2020-03-18 15:15:07
题目来源: https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1125 Description 编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。 上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下: IsUpperTriMatrix(int a, int n); Input 输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。 Output 如果a是上三角矩阵,输出“YES”,否则,输出“NO” Sample Input 4 1 2 3 4 0 2 2 2 0 0 3 4 0 0 0 4 Sample Output YES 题意描述: 输入正整数n和n阶方阵 调用函数IsUpperTriMatrix()判断是否为上三角矩阵,是输出“YES”,否输出“NO” 解题思路: 函数IsUpperTriMatrix()中根据行列的变化规律写出写出判断边界即可 程序代码: 1 #include<stdio.h> 2 int a[11][11]; 3 int IsUpperTriMatrix

1125: 上三角矩阵的判断

跟風遠走 提交于 2020-03-08 22:59:27
1125: 上三角矩阵的判断 时间限制: 1 Sec 内存限制: 128 MB 提交: 6923 解决: 4248 [状态] [讨论版] [提交] [命题人:admin] 题目描述 编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。 上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下: int IsUpperTriMatrix(int a[][N], int n); 输入 输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。 输出 如果a是上三角矩阵,输出“YES”,否则,输出“NO” 样例输入 Copy 4 1 2 3 4 0 2 2 2 0 0 3 4 # include <stdio.h> int a [ 100 ] [ 100 ] ; int IsUpperTriMatrix ( int n ) { int i , j ; for ( i = 1 ; i < n ; i ++ ) { for ( j = 0 ; j < i ; j ++ ) { if ( a [ i ] [ j ] != 0 ) return ( 0 )

判断上三角矩阵

…衆ロ難τιáo~ 提交于 2020-03-07 04:52:34
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 - 8 2 输出样例: YES NO 代码: # include <stdio.h> int main ( ) { int t , n , flag = 0 ; int a [ 10 ] [ 10 ] ; int b [ 100 ] ; //判断是否为上三角矩阵 scanf ( "%d" , & t ) ; for ( int i = 0 ; i < t ; i ++ ) { scanf ( "%d" , & n ) ; for ( int i = 0 ; i < n ; i ++ ) //读入矩阵 { for ( int j = 0 ; j < n ; j ++ ) { scanf ( "%d" , & a [ i ] [ j ] ) ; } } for ( int i = 1 ; i < n ;

ZZULIOJ 1125: 上三角矩阵的判断

南楼画角 提交于 2020-02-14 23:09:51
1125: 上三角矩阵的判断 题目描述 编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。 上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下: int IsUpperTriMatrix(int a[][N], int n); 输入 输入一个正整数n(1<=n<=10)和n阶 方阵 a中的元素,均为整数。 输出 如果a是上三角矩阵,输出“YES”,否则,输出“NO” 样例输入 4 1 2 3 4 0 2 2 2 0 0 3 4 0 0 0 4 样例输出 YES (C语言) # include <stdio.h> int IsUpperTriMatrix ( int a [ ] [ 11 ] , int n ) //函数原型中的N换成具体数据,要求1<=n<=10,所以N=11 { int i , j , flag = 0 ; /*判断当j<i时,二维数组中对应的数是否为0*/ for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < i ; j ++ ) { if ( a [ i ] [ j ] != 0

朝花夕拾之Matlab矩阵运算

不羁岁月 提交于 2020-01-29 15:21:44
矩阵运算 1. 加、减运算 运算符:“+”和“-”分别为加、减运算符。 运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。 例1-22 >>A=[1, 1, 1; 1, 2, 3; 1, 3, 6] >>B=[8, 1, 6; 3, 5, 7; 4, 9, 2] >>A+B=A+B >>A-B=A-B 结果显示:A+B= 9 2 7 4 7 10 5 12 8 A-B= -7 0 -5 -2 -3 -4 -3 -6 4 2. 乘法 运算符:* 运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。 1.两个矩阵相乘 例1-23 >>X= [2 3 4 5; 1 2 2 1]; >>Y=[0 1 1; 1 1 0; 0 0 1; 1 0 0]; Z=X*Y 结果显示为: Z= 8 5 6 3 3 3 2.矩阵的数乘:数乘矩阵 上例中:a=2*X 则显示:a = 4 6 8 10 2 4 4 2 向量的点乘(内积):维数相同的两个向量的点乘。 数组乘法: A.*B表示A与B对应元素相乘。 3 .向量点积 函数 dot 格式 C = dot(A,B) %若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。 C = dot(A,B,dim) %在dim维数中给出A与B的点积

顺序表练习(四):上三角矩阵的压缩存储公式推导以及代码实现

孤者浪人 提交于 2020-01-23 05:50:19
前言 本篇博客会较为详细地讲一下我个人对三角矩阵压缩存储公式的理解,希望能给后面的朋友们带来一些帮助。 等差数列的求和公式 由于三角矩阵的压缩存储公式是依靠求和公式来推导的,所以得先补一下等差数列的求和公式。 求和公式一: 其中n是整个数列的项数, 是数列的首项,d是数列的公差(递增数列公差为正数,递减数列公差为负数)。 求和公式二: 其中n为整个数列的项数, 是数列的首项, 是数列的末项。下面主要用到这个公式二。 上三角矩阵压缩储存公式的推导 首先我们知道,压缩储存上三角矩阵,本质上就是将矩阵的上三角块的元素“展开”成一条长的数列存在数组里。问题就在于,我们 如何根据原矩阵里元素的行号和列号得到压缩后数组里对应的下标? 我们可以这样考虑: 对于一个上三角块里第i行第j列的元素 ,它在数组里的下标就等于(在原矩阵中)他前面i-1行的元素数量 + (原矩阵中)他所在行的他前面的元素数量 ,以下面这个矩阵为例, 在数组里的位置就应该是它前面两行元素的数量5+4=9,再加上 所在行它前面的元素数量1(即是 ),最终结果10即是 在数组中的位置(当然,转换成物理下标的话还需要-1)。 那么问题又来了, 我们如何才能知道前面1到i-1行的元素数量? 这个时候就要用到我们的等差数列求和公式了,我们可以从上到下地将每行的 元素数量 看成一个数列,对于上图的矩阵来说,这个数列就是5 4 3 2 1

PTA——7-3 判断上三角矩阵

自古美人都是妖i 提交于 2019-12-16 03:27:29
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 输出样例: YES NO //3 # include <stdio.h> int is_up ( int a [ ] [ 11 ] [ 11 ] , int p ) ; int pe [ 10 ] ; int main ( ) { int T , p , i , j ; int a [ 11 ] [ 11 ] [ 11 ] ; scanf ( "%d" , & T ) ; for ( p = 1 ; p <= T ; p ++ ) { scanf ( "%d" , & pe [ p ] ) ; for ( i = 1 ; i <= pe [ p ] ; i ++ ) { for ( j = 1 ; j <= pe [ p ] ; j ++ ) { scanf ( "%d" , & a [ p

7-3 判断上三角矩阵

蓝咒 提交于 2019-12-14 21:39:05
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 输出样例: YES NO #include<stdio.h> #include<string.h> int main() { int n,a[10][10],k,flag; a[0][0]=0; char s[40]; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&k); for(int j=0;j<k;j++) { for(int r=0;r<k;r++) { scanf("%d",&a[j][r]); } } flag=1; for(int b=1;b<n;b++) { for(int c=0;c<b;c++) { if(a[b][c]!=0) { flag=0; } } } if(flag==1) { strcat(s,“YES

[线性代数xOI/ACM]系数矩阵的QGXZ分解

丶灬走出姿态 提交于 2019-12-02 07:02:25
一些无关紧要的Q&A Q:你是怎么想到这个花里胡哨的算法的啊? A:前几天学习线性代数时有幸和 Magolor大佬 讨论到 $LU$ 分解在多解时的时间复杂度问题,于是yy出了这个奇怪(?)的算法。 Q:为什么叫 $QGXZ$ 分解呀?你是不是在装逼啊? A:这个名字是 Magolor大佬 起的,我也只能无条件服从咯~ 如有雷同绝非学术不端~ Q: Magolor大佬 太强啦~ A:恭喜我们达成了共识~ 概述 $QGXZ$ 分解,是用于解决多线性方程组通解问题的算法。具体来讲: 给出 $n\times m$ 的系数矩阵 $A$ ,分别求 $Ax=b_1,Ax=b_2,...,Ax=b_q$ 的 通解 ,其中 $b_i$ 是 $n\times 1$ 的列向量。以下假设 $n,m,q$ 同阶。 如果对 $b_i$ 强制在线的话,朴素算法的时间复杂度为 $O(n^4)$ 。如果对矩阵进行 $QGXZ$ 分解,则复杂度降为 $O(n^3)$ 。 前置技能 $QGXZ$ 分解本质上是 $LU$ 分解的扩展,因此先来介绍一下 $LU$ 分解。 $LU$ 分解是对于一个 $n\times m$ 的矩阵,将其分解为一个 $n\times n$ 的下三角矩阵 $L$ 和一个 $n\times m$ 的上梯形矩阵 $U$ 的乘积的结果,即 $A=L\times U$ 。 求法:对于矩阵 $A$