習題7-3 判斷上三角矩陣

上三角矩陣指主對角線如下的元素都爲0的矩陣;主對角線爲從矩陣的左上角至右下角的連線。html

本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。數組

輸入格式:

輸入第一行給出一個正整數T,爲待測矩陣的個數。接下來給出T個矩陣的信息:每一個矩陣信息的第一行給出一個不超過10的正整數n。隨後n行,每行給出n個整數,其間以空格分隔。網絡

輸出格式:

每一個矩陣的判斷結果佔一行。若是輸入的矩陣是上三角矩陣,輸出「YES」,不然輸出「NO」。數據結構

 

以上是題目要求。接下來先給出代碼:spa

 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\n");
33         }
34         else
35             printf("NO\n");
36     }
37     return 0;
38     
39 }

以上是代碼,接下來逐步分析。操作系統

我大一就學過了c,此次是從新學c,想經過c把本身的代碼找回來,畢竟上一年都在學理論課,好比操做系統, 數據結構,網絡和組成原理這種,就把代碼耽擱了,此次爭取補回來而且從不一樣的方向加油。code

 

這個題個人核心思路是,在線處理,就是輸入一個數字,若是符合條件,就進行判斷,而且將判斷的結果保存在boo數組中。htm

 

而後須要稍微動腦的地方就是,如何表示對角線如下都是「0」,我用的是笨的方法,就是用了2個for嵌套,外層是橫座標,內層是縱座標,而後橫座標>縱座標,即對角線如下的元素。blog

 

寫寫心得體會吧數學

1.此代碼能夠精進,若是按照我這個思路來的話,能夠不用2層for來解決元素位置問題,能夠運用數學方法巧妙解決,奈何寶寶笨,想了好久也想不出巧法,要不就定義不少數據,我不喜歡這樣子,就採用了本方法,若是兄弟們有好的方法,能夠在評論區說下或者私信均可以。我必定第一時間解決。

2.大三了,準備考研了,爲啥學c呢,由於它考c,我一方面想撿起來,另外一方面也想考上它。就從如今起加油吧!

相關文章
相關標籤/搜索