牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述------BC106 上三角矩阵判定

牛客网OJ题链接

描述

KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

示例

输入:

3

1 2 3

0 4 5

0 0 6

输出:YES

2. 思路

3. 代码实现

c 复制代码
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0,j = 0;
	int arr[10][10] = { 0 };
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}

	int k = 0;
	int t = 0;
	int flag = 1;
	for (k = 0; k < n; k++)
	{
		for (t = 0; t < k; t++)
		{
			if (arr[k][t] != 0)
			{
				flag = 0;
			}
		}
	}
	if (flag == 1)
	{
		printf("YES\n");
	}
	else
	{
		printf("NO\n");
	}



	return 0;

4. 代码实现2

这个加入了goto 语句,因为如果我们已经判断不等于0,就不需要判断剩余的了

c 复制代码
#include<stdio.h>
int main() {
    int n = 0;
    scanf("%d", &n);
    int i = 0, j = 0;
    int arr[10][10] = { 0 };
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    int k = 0;
    int t = 0;
    int flag = 1;
    for (k = 0; k < n; k++) {
        for (t = 0; t < k; t++) {
            if (arr[k][t] != 0) {
                flag = 0;
                goto end;
            }
        }
    }
end:
    if (flag == 1) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }



    return 0;
}

5.代码实现3

我们也可以不使用goto,当判断我们有值不等于0的时候,直接打印NO,然后return。

c 复制代码
#include<stdio.h>
int main() {
    int n = 0;
    scanf("%d", &n);
    int i = 0, j = 0;
    int arr[10][10] = { 0 };
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    int k = 0;
    int t = 0;
    for (k = 0; k < n; k++) {
        for (t = 0; t < k; t++) {
            if (arr[k][t] != 0) {
                printf("NO\n");
                return 0;
            }
        }
    }


    printf("YES\n");
    return 0;
}

6. 代码实现4,其实并不需要再创建两个循环变量,都使用i和j是没问题的,因为我们会给i,j重新赋值为0

c 复制代码
#include<stdio.h>
int main() {
    int n = 0;
    scanf("%d", &n);
    int i = 0, j = 0;
    int arr[10][10] = { 0 };
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr[i][j]);
        }
    }


    for (i = 0; i < n; i++) {
        for (j = 0; j < i; j++) {
            if (arr[i][j] != 0) {
                printf("NO\n");
                return 0;
            }
        }
    }


    printf("YES\n");
    return 0;
}
相关推荐
算法鑫探1 小时前
10个数下标排序:最大值、最小值与平均值(下)
c语言·数据结构·算法·排序算法·新人首发
少司府1 小时前
C++基础入门:类和对象(中)
c语言·开发语言·c++·类和对象·运算符重载·默认成员函数
爱编码的小八嘎2 小时前
C语言完美演绎7-5
c语言
REDcker3 小时前
OpenSSL:C 语言 TLS 客户端完整示例
c语言·网络·数据库
quintin-lee5 小时前
Postgres 内核:从入门到“入土” (三) —— Page 结构:数据是如何在磁盘上“躺平”的
c语言·数据库·postgresql·数据库架构
深邃-6 小时前
【C语言】-数据在内存中的存储(1)
c语言·开发语言·数据结构·c++·算法
♛识尔如昼♛6 小时前
C 基础(5) - 运算符、表达式和语句
c语言
一只废狗狗狗狗狗狗狗狗狗6 小时前
c语言速通复习
c语言·开发语言
计算机安禾6 小时前
【数据结构与算法】第31篇:排序概述与插入排序
c语言·开发语言·数据结构·学习·算法·重构·排序算法
草莓熊Lotso6 小时前
MySQL 事务管理全解:从 ACID 特性、隔离级别到 MVCC 底层原理
linux·运维·服务器·c语言·数据库·c++·mysql