前言
今天和大家一起学习一下如何判断上三角矩阵。
一、上三角矩阵
题目来源:
描述
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
输入描述:
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
输出描述:
一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。
二、解题思路
1.错误代码(一开始看错,直接整了个矩阵给它)
代码如下(示例):
#include<stdio.h> int main(){ int n; int arr[10][10]={0}; //初始化 scanf("%d",&n); int j=0,i=0,a=0,w; while(j<=n){ //设置循环条件 for(i=j;i<n;i++){ //输入数组 arr[j][i]=++a; } j++; //斜向下移动一位 } for(int k=0;k<n;k++){ //输出,有输入的就输出数字,没有输入的数组在前面已经初始化为0 for(int l=0;l<n;l++){ printf("% d",arr[k][l]); } printf("\n"); } return 0; }
不过我个人认为里面也有一些方法值得大家学习学习。
2、正确代码
int main() { int arr[10][10] = { 0 }; int i = 0; int j = 0; int n = 0; scanf("%d", &n); int sum = 0; for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { scanf("%d", &arr[i][j]); //输入 while (i > j) //下三角部分 { sum += arr[i][j]; //如果是上三角矩阵,下三角理应都为0 break; } } } if (sum==0) //判断 { printf("YES\n"); } else { printf("NO\n"); } return 0; }
要注意判断循环的条件(i>j),这些循环的条件的判断对于我们去解循环数组,比如回型、蛇形(这几天会更)是很关键的,希望大家能仔细琢磨一下~
总结
以上就是今天要讲的内容,本文仅仅简单介绍了如何判断上三角矩阵,希望对大家有少少帮助~