zoukankan      html  css  js  c++  java
  • 习题7-3 判断上三角矩阵

    上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

    本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

    输入格式:

    输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

    输出格式:

    每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

    以上是题目要求。接下来先给出代码:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 #include<string.h>    //有些.h是没有用到的,不过出于习惯,并且没有工程压力就加上了。
     5 int main() {
     6     int n = 0;      //  n是整个矩阵的个数
     7     int* m;        //  m是第n个矩阵(方阵)的横或纵的数  【m是数组】
     8     int a = 0;      //  a是判断条件,后面在if语句里会用到
     9     //int interval = 0;                      //无关要素,请自动忽略
    10     int boo[10];      //把每一个矩阵的判断放到此数组中
    11     scanf("%d", &n);  
    12     m = (int*)malloc(n * sizeof(int));  //动态数组  
    13     
    14     for (int l = 0; l < n; l++) {
    15         boo[l] = 1;          //此处直接先假设都是 上三角矩阵  后面如果遇到不符的直接判0
    16         scanf("%d", &m[l]);  
    17         int len = pow(m[l],2);
    18         for (int i = 0; i < m[l]; i++) {
    19             for(int j = 0 ; j < m[l] ; j++){
    20                 scanf("%d", &a);
    21                 if (i > j) {
    22                     if (a != 0) {
    23                         boo[l] = 0;        //这里 !我的思路是在线处理
    24                     }
    25                 }
    26             
    27             }
    28         }
    29     }
    30     for (int i = 0; i < n; i++) {
    31         if (boo[i] == 1) {
    32             printf("YES
    ");
    33         }
    34         else
    35             printf("NO
    ");
    36     }
    37     return 0;
    38     
    39 }

    以上是代码,接下来逐步分析。

    我大一就学过了c,这次是重新学c,想通过c把自己的代码找回来,毕竟上一年都在学理论课,比如操作系统, 数据结构,网络和组成原理这种,就把代码耽搁了,这次争取补回来并且从不同的方向加油。

    这个题我的核心思路是,在线处理,就是输入一个数字,如果符合条件,就进行判断,并且将判断的结果保存在boo数组中。

    然后需要稍微动脑的地方就是,如何表示对角线以下都是“0”,我用的是笨的方法,就是用了2个for嵌套,外层是横坐标,内层是纵坐标,然后横坐标>纵坐标,即对角线以下的元素。

    写写心得体会吧

    1.此代码可以精进,如果按照我这个思路来的话,可以不用2层for来解决元素位置问题,可以运用数学方法巧妙解决,奈何宝宝笨,想了很久也想不出巧法,要不就定义很多数据,我不喜欢这样子,就采用了本方法,如果兄弟们有好的方法,可以在评论区说下或者私信都可以。我一定第一时间解决。

    2.大三了,准备考研了,为啥学c呢,因为它考c,我一方面想捡起来,另一方面也想考上它。就从现在起加油吧!

  • 相关阅读:
    org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard
    mybatis plus 代码生成器
    ServerU FTP服务器无法上传中文名文件怎么办
    关于java文件下载文件名乱码问题解决方案
    使用Redis模拟简单分布式锁,解决单点故障的问题
    springboot定时任务处理
    AtomicInteger类的理解与使用
    java队列——queue详细分析
    ABAP DEMO so批量导入
    ABAP DEMO ole示例程序
  • 原文地址:https://www.cnblogs.com/KeithTee/p/13823968.html
Copyright © 2011-2022 走看看