0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C編程:“最大子數(shù)組的和” 的動(dòng)態(tài)規(guī)劃的解法

嵌入式技術(shù) ? 來(lái)源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-08-21 09:33 ? 次閱讀

C編程筆試 --“最大子數(shù)組的和” 的動(dòng)態(tài)規(guī)劃的解法

?1.最大子數(shù)組之和

例1:數(shù)組int a1[5] = { -1, 5, 6, -7, 3 };其最大子數(shù)組之和為:5+6=11
例2:數(shù)組int a2[5] = { -5, -4, -8, -1, -10 };其最大子數(shù)組之和為:-1
例3:數(shù)組 int a3[5] = { -1, 5, 6, -7, 10 };其最大子數(shù)組之和為:5+6-7+10=14

??功能實(shí)現(xiàn):

# include 
# include 
int MaxSum(int* arr, int size)
{
    int current = arr[0]; //當(dāng)前數(shù)組最大和
    int max = current;

    for (int i = 0; i < size; i++)
    {
        if (current < 0)
            current = 0;
        current += arr[i];
        if (current > max)
            max = current;
    }
    return max;
}

int main(void)
{
    char x[40], y[40];

    int a1[5] = { -1, 5, 6, -7, 3 };
    int a2[5] = { -5, -4, -8, -1, -10 };
    int a3[5] = { -1, 5, 6, -7, 10 };

    int max1, max2, max3;
    max1 = MaxSum(a1, 5);
    max2 = MaxSum(a2, 5); //這個(gè)應(yīng)該返回 -1, 
    max3 = MaxSum(a3, 5);
	printf("max1=%d,max2=%d,max3=%d\n",max1,max2,max3);
}

?2.獲取最大子數(shù)組的開(kāi)始和結(jié)束的下標(biāo)

??如果我需要返回值返回這個(gè)最大子數(shù)組的開(kāi)始和結(jié)束的下標(biāo),你要怎么修改這個(gè)程序?

例1:數(shù)組int a1[5] = { -1, 5, 6, -7, 3 };其最大子數(shù)組之和為:5+6=11;最大子數(shù)組開(kāi)始和結(jié)束下標(biāo)為:1 2。
例2:數(shù)組int a2[5] = { -5, -4, -8, -1, -10 };其最大子數(shù)組之和為:-1;最大子數(shù)組開(kāi)始和結(jié)束下標(biāo)為:3 3。
例3:數(shù)組 int a3[5] = { -1, 5, 6, -7, 10 };其最大子數(shù)組之和為:5+6-7+10=14 ; 最大子數(shù)組開(kāi)始和結(jié)束下標(biāo)為:1 4。
例4:數(shù)組 int a3[] = {-2, -1, -3, 4, -1, 2, 1, -5, 4};其最大子數(shù)組之和為:4+(-1)+2+1=6 ; 最大子數(shù)組開(kāi)始和結(jié)束下標(biāo)為:3 6。
??功能實(shí)現(xiàn):

#include 
#include 
void solution(int m, int *arr){
    int current=arr[0];
    int max=current;
    int start=0,end=0;
    int i=0;
    /*計(jì)算最大子數(shù)組之和*/
    for(i=1;imax)
        {
            max = current;
            end=i;//最大子數(shù)組結(jié)束下標(biāo)
        }
    }
	int temp=max;
	/*計(jì)算最大子數(shù)組結(jié)束下標(biāo)*/
    for(i=end;i>=0;i--)
    {
	  temp-=arr[i];
      if(temp<=0 || temp>max)break;
    }
	if(i<0)i=0;
    start=i;
    printf("%d,%d %d\n",max,start,end);
}
int main() {
    int n;
	printf("輸入個(gè)數(shù):");
    scanf("%d", &n);
    int *arr;
    arr = (int*)malloc(n * sizeof(int));
	printf("輸入%d個(gè)整數(shù):",n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    solution(n, arr);
    return 0;
}
;i++)>

??運(yùn)行結(jié)果:

pYYBAGMBfYaAP_I9AAMUkvwWkUo576.png#pic_center

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134142
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    411

    瀏覽量

    25824
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項(xiàng)常見(jiàn)的任務(wù),尤其是在處理數(shù)據(jù)采集、信號(hào)處理或用戶輸入時(shí)。 1. 理解LabVIEW的數(shù)據(jù)類型 在開(kāi)始之前,了解LabVIEW中的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?438次閱讀

    PHP中數(shù)組的使用方法!

    PHP中數(shù)組的使用方法! PHP是一種廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它的數(shù)組功能非常強(qiáng)大且靈活。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它允許我們?cè)趩蝹€(gè)變量中存儲(chǔ)多個(gè)值。 在本篇文章中,我將詳細(xì)解釋PHP
    的頭像 發(fā)表于 01-12 15:11 ?401次閱讀

    數(shù)組與指針不能混用的情況

    數(shù)組與指針不能混用的情況? 數(shù)組與指針是 C/C++ 中非常常見(jiàn)的特性和概念。然而,在某些情況下,數(shù)組與指針是不能混用的。這種情況通常涉及到
    的頭像 發(fā)表于 12-07 13:46 ?490次閱讀

    js判斷是否在數(shù)組中存在

    JavaScript 是一種用于客戶端和服務(wù)器端編程的腳本語(yǔ)言。它提供了許多內(nèi)置函數(shù)和方法,以便進(jìn)行數(shù)組操作。 在本文中,我們將學(xué)習(xí)如何使用 JavaScript 來(lái)判斷一個(gè)元素是否存在于數(shù)組
    的頭像 發(fā)表于 11-30 16:23 ?870次閱讀

    jsp判斷數(shù)組是否包含某個(gè)值

    JSP(JavaServerPages)是一種能夠使用Java開(kāi)發(fā)動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。在本文中,我們將探討有效地確定數(shù)組是否包含JSP中特定值的技術(shù)和方法。這個(gè)過(guò)程包括理解數(shù)組的基本結(jié)構(gòu),訪問(wèn)和操作
    的頭像 發(fā)表于 11-30 16:18 ?791次閱讀

    C語(yǔ)言中的數(shù)組格式與初始化

    ????數(shù)組:只能存放一種數(shù)據(jù)類型,比如int類型的數(shù)組、float類型的數(shù)組,里面存放的數(shù)據(jù)稱為“元素”。 ????數(shù)組的定義: ????首先聲明
    的頭像 發(fā)表于 11-26 16:12 ?664次閱讀
    <b class='flag-5'>C</b>語(yǔ)言中的<b class='flag-5'>數(shù)組</b>格式與初始化

    C語(yǔ)言中數(shù)組的用法

    C語(yǔ)言的數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它可以存儲(chǔ)多個(gè)相同類型的數(shù)據(jù),例如整數(shù),字符,浮點(diǎn)數(shù)等。數(shù)組的每個(gè)元素都有一個(gè)索引,用來(lái)表示它在數(shù)組中的位置。數(shù)組
    的頭像 發(fā)表于 11-24 17:48 ?1076次閱讀
    <b class='flag-5'>C</b>語(yǔ)言中<b class='flag-5'>數(shù)組</b>的用法

    c語(yǔ)言中多維數(shù)組可以嵌套定義

    C語(yǔ)言中多維數(shù)組可以嵌套定義,這使得我們可以在一個(gè)數(shù)組中存儲(chǔ)另一個(gè)數(shù)組。通過(guò)這種方式,我們可以創(chuàng)建更加復(fù)雜和靈活的數(shù)據(jù)結(jié)構(gòu),以便更好地表示和處理各種類型的數(shù)據(jù)。 首先,我們先介紹多維
    的頭像 發(fā)表于 11-24 10:18 ?811次閱讀

    c語(yǔ)言中數(shù)組怎么定義

    C語(yǔ)言中,數(shù)組是一種用來(lái)存儲(chǔ)相同類型元素的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)多個(gè)元素,并通過(guò)一個(gè)共同的名稱來(lái)引用這些元素。數(shù)組是一種很重要的數(shù)據(jù)結(jié)構(gòu),可以用于解決很多實(shí)際的問(wèn)題。 在C語(yǔ)言中,定義
    的頭像 發(fā)表于 11-24 10:11 ?2278次閱讀

    C語(yǔ)言如何創(chuàng)建數(shù)組

    C語(yǔ)言是一種非常強(qiáng)大和靈活的編程語(yǔ)言,它提供了若干數(shù)據(jù)類型來(lái)存儲(chǔ)和操作數(shù)據(jù)。其中之一就是數(shù)組,它可以用來(lái)存儲(chǔ)一系列具有相同數(shù)據(jù)類型的元素。本文將詳細(xì)介紹如何在C語(yǔ)言中創(chuàng)建
    的頭像 發(fā)表于 11-24 10:08 ?1366次閱讀

    c語(yǔ)言在數(shù)組中查找指定元素

    C語(yǔ)言是一種通用的編程語(yǔ)言,廣泛應(yīng)用于各種領(lǐng)域,包括嵌入式系統(tǒng)、操作系統(tǒng)、游戲開(kāi)發(fā)等。在C語(yǔ)言中,數(shù)組是一種非常重要的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)一系列相同類型的元素。查找指定元素在
    的頭像 發(fā)表于 11-24 10:07 ?2952次閱讀

    python列表和數(shù)組的區(qū)別

    Python是一種功能強(qiáng)大的編程語(yǔ)言,為開(kāi)發(fā)者提供了許多數(shù)據(jù)結(jié)構(gòu)來(lái)處理和操作數(shù)據(jù)。其中,列表和數(shù)組是常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和組織一系列元素。在本文中,我們將詳細(xì)比較Python中的列表和數(shù)組,從
    的頭像 發(fā)表于 11-21 15:13 ?1873次閱讀

    西門(mén)子博途中如何讀取其它類型數(shù)組最大值及索引

    此程序可以求其它類型數(shù)組最大值及索引,只要在FC中再添加一些程序即可。
    的頭像 發(fā)表于 11-10 09:29 ?1538次閱讀
    西門(mén)子博途中如何讀取其它類型<b class='flag-5'>數(shù)組</b>的<b class='flag-5'>最大</b>值及索引

    什么是數(shù)組?數(shù)組有什么用?數(shù)組的使用方法

    數(shù)組(Array)是有序的元素序列。
    的頭像 發(fā)表于 11-08 14:58 ?1314次閱讀
    什么是<b class='flag-5'>數(shù)組</b>?<b class='flag-5'>數(shù)組</b>有什么用?<b class='flag-5'>數(shù)組</b>的使用方法

    數(shù)組的定義 什么是數(shù)組

    數(shù)組 數(shù)組是內(nèi)置類型,是一組同類型數(shù)據(jù)的集合,它是值類型,通過(guò)從0開(kāi)始的下標(biāo)索引訪問(wèn)元素值。 在初始化后長(zhǎng)度是固定的,無(wú)法修改其長(zhǎng)度。當(dāng)作為方法的參數(shù)傳入時(shí)將復(fù)制一份數(shù)組而不是引用同一指針。
    的頭像 發(fā)表于 10-09 09:39 ?1716次閱讀