本周作業
本周請大家完成上周挑戰作業的第一部分:給定一個整數數組(包含正負數),找到一個具有最大和的子數組,返回其最大的子數組的和。
例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子數組為[3, 10, -4, 7, 2]
1).實驗代碼
#include<stdio.h>
#include<stdlib.h>
int main(void)
{FILE*fp;int n, i, num, s, x,sum=0,z,big,zhu, jishuqi=0;if((fp=fopen("E:\\lidaichuan\\ldx.txt","a+"))==NULL){printf("File open error!\n");exit(0); }fscanf(fp,"%d", &n); int a[n];for(i=0; i<n; i++){fscanf(fp,"%d,", &a[i]);}big=a[0];s=n;for(i=0; i<n; i++){num=i+1; for(z=0; z<s; z++){for(x=z; x<num; x++){sum=sum+a[x];big=(big>sum)?big:sum;}sum=0;++num;}s--;}fseek(fp, 0L, 1);fprintf(fp, "\n%d\n", big);s=n;sum=0;for(i=0; i<n; i++){num=i+1; for(z=0; z<s; z++){for(x=z; x<num; x++){sum=sum+a[x];if(big==sum){for(zhu=z; zhu<num; zhu++){fprintf(fp, "%d,", a[zhu]);}jishuqi=10;}if(jishuqi==10){break;}}sum=0;++num;if(jishuqi==10){break;}}s--;if(jishuqi==10){break;}}if(fclose(fp)){printf("Can not close the file!\n");exit(0);}return 0;}
2)設計思路
3)本題做對過程碰到問題及解決辦法
發現是,s=n;放到了第一個for循環中,這導致每一次for循環,就會使s被重新賦值。導致后面控制子數集循環時每一次都會循環n次
這次是寫入的時候,控制輸出數據的起使量賦值錯誤,不該是zhu=x,應該為zhu=z。
正確截圖
對自己作業評價
做了大概三個小時吧,感覺很好,但是窮舉法運算量會不會太大?還有待改進。
學習感悟
學如逆水行舟,不進則退。這次的起點思路還是問了室友何磊才得到的。自己當時還搞錯了子數集的定義,自己還是太差了,得繼續努力虛心學習。
7-1 判斷上三角矩陣 (15 分)
上三角矩陣指主對角線以下的元素都為0的矩陣;主對角線為從矩陣的左上角至右下角的連線。
本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。
輸入格式:
輸入第一行給出一個正整數T,為待測矩陣的個數。接下來給出T個矩陣的信息:每個矩陣信息的第一行給出一個不超過10的正整數n。隨后n行,每行給出n個整數,其間以空格分隔。
輸出格式:
每個矩陣的判斷結果占一行。如果輸入的矩陣是上三角矩陣,輸出“YES”,否則輸出“NO”。
輸入樣例:
2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
輸出樣例:
YES
NO
實驗代碼
#include<stdio.h>
int main(void)
{int T,i,line,column,n,x=0;scanf("%d", &T);int b[T];for(i=0; i<T; i++){scanf("%d", &n);int a[n][n];for(line=0; line<n; line++){for(column=0; column<n; column++){scanf("%d", &a[line][column]);}}for(line=0; line<n; line++){for(column=0; column<n; column++){if((line>column)&&(a[line][column]!=0)){b[i]=1;break;}}}if(b[i]!=1){b[i]=0;}}while(x<T){if(b[x]==0){printf("YES\n");}else{printf("NO\n");}x++;}}
設計思路
3)本題做對過程碰到問題及解決辦法
本來是一次對的,但是很讓人煩惱的是:在PTA上總是不對。后來,還是李鈺祺幫我改好了,能在PTA上正確了。
就改了一和零的位置,原來是矩陣的話就在b[T]里存入零,現在變成了存入一。后面的零和一的位置也置換了。
但是現在還是不明白為什么PTA會判我錯,明明原來的更好呀。
正確截圖
對自己作業的評價
這次作業做的應該算又快又好吧,雖然PTA上沒有正確,但還可以做的更好的,加油!
學習進度條
周 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第三周 | 八小時 | 106 | 二維數組的基本知識 | PTA的測試點是啥,第一個題除了窮舉法還有沒有其他方法?指針在文件中的寫入位置在哪?怎么來確定的? |
學習感悟
哎呀,又過了一個星期了,自我感覺知識提高不大。還是要自己多看書,多操作。把老師沒交的自己自學學好。加油!