#一,本週完成的做業(第一題) ##基礎做業 ####給定一個整數數組(包含正負數),找到一個具備最大和的子數組,返回其最大的子數組的和。 ####輸入: ####請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。 ####輸出: ####在不刪除原有文件內容的狀況下,將最大子數組以及子數組的和寫入文件。 ###1)實驗代碼算法
#include<stdio.h> #include<string.h> #include<stdlib.h> int main (void) { FILE *fp; char a; /*吸取數組先後的括號和數組中的逗號*/ int n=8,nums[8],b,j,i,c; if((fp=fopen("E:\\PTA\\chenxilin.txt","r+"))==NULL){ printf("File open error!\n"); exit(0); } fscanf(fp,"%c",&a); /*吸取數組前的括號*/ for(i=0;i<8;i++){ fscanf(fp,"%d%c",&nums[i],&a); /*此時的字符a用來吸取逗號*/ printf("%d ",nums[i]); } fscanf(fp,"%c",&a); /*吸取數組後的的括號*/ int max = 0; int sum = 0; /*最大的子數組的和*/ for(i=0;i<n;i++){ sum = 0; for(j=i;j<n;j++){ sum += nums[j]; if(sum > max ) max = sum; } } /*找出最大子數組*/ for(i=0;i<n;i++){ sum=0; for(j=i;j<n;j++){ sum+=nums[j]; if(sum==max){ b=i; c=j; break; } } } printf("\n"); fprintf(fp,"\n最大子數組是["); /*輸出最大子數組*/ for(i=b;i<=c-1;i++){ fprintf(fp,"%d,",nums[i]); printf("%d ",nums[i]); } fprintf(fp,"%d",nums[c]); printf("%d ",nums[c]); fprintf(fp,"]"); /*輸出最大子數組的和*/ fprintf(fp,"\n最大子數組的和是%d",max); printf("\n%d",max); if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
###2)設計思路 數組
###3)本題調式過遇到的問題及其解決方法 ####問題一,數組中有逗號定義一個數組數組會把逗號吸取進去,致使數組內容出錯! ###解決方法,定義一個字符變量,用來吸取括號和逗號. ###4)運行結果 學習
##第二題 ###判斷上三角矩陣 (15 分) ####上三角矩陣指主對角線如下的元素都爲0的矩陣;主對角線爲從矩陣的左上角至右下角的連線。本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。設計
###輸入格式: ###輸入第一行給出一個正整數T,爲待測矩陣的個數。接下來給出T個矩陣的信息:每一個矩陣信息的第一行給出一個不超過10的正整數n。隨後n行,每行給出n個整數,其間以空格分隔。3d
###輸出格式: ###每一個矩陣的判斷結果佔一行。若是輸入的矩陣是上三角矩陣,輸出「YES」,不然輸出「NO」。code
###輸入樣例:blog
2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2
###輸出樣例:string
YES NO
###1)實驗代碼it
#include <stdio.h> int main(void) { int T,n,i,h,l,p; int a[100][100]; scanf("%d",&T); for(i=1;i<=T;i++) { scanf("%d",&n); for(h=0;h<n;h++) { for(l=0;l<n;l++) scanf("%d",&a[h][l]); } p=1; for(h=0;h<n;h++) { for(l=0;l<h;l++) { if(a[h][l]!=0) p=0; } } if(p==1) printf("YES\n"); if(p==0) printf("NO\n"); } return 0; }
###2)設計思路 ###3)本題遇到的問題及其解決方法 ####問題一,怎麼遍歷下三角 ####解決方法,下三角的行數小於列數 ###4)運行結果 io
#二,學習進度條 | 周/日期| 這周所花的時間|代碼行|學到的知識點簡介|目前比較困惑的問題| |:------:|:------:| :------:|:------:|:------:| |3/9-3/15|240min|100|文件創建及其文件的利用|| |3/15-3/22|240min|200|二位數組和暴力解法|最大子數組最優的解法是什麼,如何下降時間複雜度| #三,學習感悟 ##我作第一個題的代碼看來很長,其實我在儘可能知足老師的輸入,輸出的格式!使其看起來更真實一點。這是一道算法題。而解算法題有兩種方法,一種是暴力解法(我此次用的就是暴力解法),另外一種是用解算法題的公式去解;用暴力解題思惟很簡單,但時間複雜度很大!