当前位置: 首页 > article >正文

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

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

牛客网OJ题链接

描述
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
在这里插入图片描述
示例
输入:
3
1 2 3
0 4 5
0 0 6
输出:YES

2. 思路

在这里插入图片描述

3. 代码实现

#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,就不需要判断剩余的了

#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。

#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

#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;
}



http://www.kler.cn/a/499939.html

相关文章:

  • 天气app的收获
  • 频域自适应空洞卷积FADC详解
  • Spring Boot 支持哪些日志框架
  • vue实现淘宝web端,装饰淘宝店铺APP,以及后端设计成能快速响应前端APP
  • # LeetCode 3270. 求出数字答案 —— Python 解题思路与实现
  • Spring Boot + Jasypt 实现application.yml 属性加密的快速示例
  • 【25考研】川大计算机复试情况,重点是啥?怎么准备?
  • 重新面试之JVM
  • 不同方式获取音频时长 - python 实现
  • Selenium python爬虫 是否需要设置浏览器窗口大小 ,有些按钮显示 不全会导致无法正常与这些元素进行交互
  • webpack03
  • 数据结构初阶---排序
  • 【机器学习篇】 科技异次元的超强 “魔杖”,开启奇幻新程
  • 金融项目实战 01|功能测试分析与设计
  • c++ 预备
  • 计算机基础知识复习1.5
  • cmake 编译ffmpeg的Android 的 so文件的cmake内容
  • 深度解析:语言模型的推理能力与强化学习优化
  • 人工智能与物联网:智慧城市的未来
  • 25/1/11 嵌入式笔记<esp32> 初入esp32