日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)

發布時間:2025/3/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 測試題目
    求整數數組的子數組之和的最大值。
  • 題目分析
    首先是明確題目的目的:求最大值;其次是考慮子數組求和。這里將求最大值寫成一個單獨的函數。主函數未測試函數。這里用到了二重循環,時間復雜度為N^2.
  • 源代碼分析
    #include"stdio.h"
    #define MAXSIZE 100
    /*int Max(int num[],int length) {int max=num[0];//int n;int sum=0;int flag=0;for(int j=0;j<length;j++){if(max<num[j])max=num[j]; }for(int k=0;k<length-1;k++){if(max<(num[k]+num[k+1]))max=(num[k]+num[k+1]);}for(int m=0;m<length-2;m++){if(max<(num[m]+num[m+1]+num[m+2]))max=(num[m]+num[m+1]+num[m+2]);}for(int n=0;n<length-3;n++){if(max<(num[n]+num[n+1]+num[n+2]+num[n+3]))max=(num[n]+num[n+1]+num[n+2]+num[n+3]);}for(int z=0;z<length-4;z++){if(max<(num[z]+num[z+1]+num[z+2]+num[z+3]+num[z+4]))max=(num[z]+num[z+1]+num[z+2]+num[z+3]+num[z+4]);}if(max<(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]))max=(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]);return max; }*/int Max(int num[],int length){int max=num[0];if(length<=0){printf("數組個數為零或負數,錯誤,默認MAX設為0");return 0;}for(int k=0;k<length;k++){if(num[k]==-858993460){printf("數組含為NULL,錯誤,默認MAX設為0");return 0;}}for(int i=0;i<length;i++){int sum=0;for(int j=i;j<length;j++){sum+=num[j];if(max<sum)max=sum;}}return max;} main() {//int num[]={-10,-12,1,-1,9,10};//int length=6;int num[MAXSIZE];int length;printf("輸入數組個數:");scanf("%d",&length);for(int x=0;x<length;x++)scanf("%d",&num[x]);/*for(int i=0;i<6;i++)printf("%d ",num[i]);*/printf("\n");printf("MAX:%d\n",Max(num,length)); }

    這里我進行了一些異常情況的處理






  • 上課思路

  • 擴展-線性實現
    如何利用線性實現,首先要對整形數組進行分析:
    1、零對于和沒有影響。
    2、數組是全負的情況(若只有負數和零,則max=0)
    ? ??
    for(int i=0;i<length;i++) {if(max<num[i])max=num[i]; }

    3、數組是全正的情況(含0)
    ?

    for(int i=0;i<length;i++) {if(max<num[i])max=num[i]; }

    4、有正有負的情況
    ? ? ?首先是要順序尋找第一個大于零的整數,記錄下來數組下標,然后接著尋找下一個負數,得到負數段,也求和,得到一段正數段,求和,按照這種方法遍歷整個數組。
    ? ? ?對這些正數段與負數段進行判斷與求和,從而實現求出最大者。

  • 線性實現
    ? ? ?待下回分解!



轉載于:https://www.cnblogs.com/feelwell/p/3592559.html

總結

以上是生活随笔為你收集整理的【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。