【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)
生活随笔
收集整理的這篇文章主要介紹了
【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 測(cè)試題目
求整數(shù)數(shù)組的子數(shù)組之和的最大值。 - 題目分析
首先是明確題目的目的:求最大值;其次是考慮子數(shù)組求和。這里將求最大值寫(xiě)成一個(gè)單獨(dú)的函數(shù)。主函數(shù)未測(cè)試函數(shù)。這里用到了二重循環(huán),時(shí)間復(fù)雜度為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("數(shù)組個(gè)數(shù)為零或負(fù)數(shù),錯(cuò)誤,默認(rèn)MAX設(shè)為0");return 0;}for(int k=0;k<length;k++){if(num[k]==-858993460){printf("數(shù)組含為NULL,錯(cuò)誤,默認(rèn)MAX設(shè)為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("輸入數(shù)組個(gè)數(shù):");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)); }這里我進(jìn)行了一些異常情況的處理
- 上課思路
- 擴(kuò)展-線性實(shí)現(xiàn)
如何利用線性實(shí)現(xiàn),首先要對(duì)整形數(shù)組進(jìn)行分析:
1、零對(duì)于和沒(méi)有影響。
2、數(shù)組是全負(fù)的情況(若只有負(fù)數(shù)和零,則max=0)
? ?? for(int i=0;i<length;i++) {if(max<num[i])max=num[i]; }3、數(shù)組是全正的情況(含0)
for(int i=0;i<length;i++) {if(max<num[i])max=num[i]; }
?4、有正有負(fù)的情況
? ? ?首先是要順序?qū)ふ业谝粋€(gè)大于零的整數(shù),記錄下來(lái)數(shù)組下標(biāo),然后接著尋找下一個(gè)負(fù)數(shù),得到負(fù)數(shù)段,也求和,得到一段正數(shù)段,求和,按照這種方法遍歷整個(gè)數(shù)組。
? ? ?對(duì)這些正數(shù)段與負(fù)數(shù)段進(jìn)行判斷與求和,從而實(shí)現(xiàn)求出最大者。 -
線性實(shí)現(xiàn)
? ? ?待下回分解!
轉(zhuǎn)載于:https://www.cnblogs.com/feelwell/p/3592559.html
總結(jié)
以上是生活随笔為你收集整理的【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: child pid xxx exit s
- 下一篇: UART通信协议