上三角矩陣指主對角線如下的元素都爲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,我一方面想撿起來,另外一方面也想考上它。就從如今起加油吧!