一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

    文章

    7628

    瀏覽量

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

    關(guān)注

    1

    文章

    419

    瀏覽量

    26294
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)c語(yǔ)言編程實(shí)例大全

    單片機(jī)c語(yǔ)言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?0次下載

    C++學(xué)到什么程度可以找工作?

    、動(dòng)態(tài)規(guī)劃、貪心算法等)。 3. **操作系統(tǒng)原理**:理解進(jìn)程與線程、并發(fā)控制、同步機(jī)制(如互斥鎖、信號(hào)量等)、進(jìn)程間通信等概念。 4. **網(wǎng)絡(luò)編程**:熟悉基于Socket的網(wǎng)絡(luò)編程
    發(fā)表于 03-13 10:19

    數(shù)組的下標(biāo)為什么可以是負(fù)數(shù)

    最近有同學(xué)發(fā)來(lái)這樣一段代碼,并提出一個(gè)問(wèn)題,數(shù)組的下標(biāo)為什么可以是負(fù)數(shù)? ? ? #include int main(){ const char *s = "helloworld"; const
    的頭像 發(fā)表于 12-20 11:18 ?377次閱讀

    數(shù)組名之間可以直接賦值嗎

    數(shù)組之間的賦值能不能直接使用等于號(hào)?比如這樣的代碼。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
    的頭像 發(fā)表于 11-26 11:23 ?443次閱讀

    指針數(shù)組和二維數(shù)組有沒(méi)有區(qū)別

    指針數(shù)組和二維數(shù)組有沒(méi)有區(qū)別?比如這樣的兩個(gè)代碼。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的頭像 發(fā)表于 11-24 11:12 ?416次閱讀

    C語(yǔ)言數(shù)組應(yīng)用計(jì)算機(jī)導(dǎo)論A第6講:數(shù)組

    C語(yǔ)言數(shù)組應(yīng)用計(jì)算機(jī)導(dǎo)論A第6講:數(shù)組
    發(fā)表于 11-20 15:33 ?0次下載

    解讀版|Air780E軟件中C語(yǔ)言內(nèi)存數(shù)組的神秘面紗!

    今天我們來(lái)揭開(kāi)Air780E 軟件中 C 語(yǔ)言內(nèi)存數(shù)組的神秘面紗,希望有所收獲。
    的頭像 發(fā)表于 11-17 10:00 ?511次閱讀
    解讀版|Air780E軟件中<b class='flag-5'>C</b>語(yǔ)言內(nèi)存<b class='flag-5'>數(shù)組</b>的神秘面紗!

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的
    的頭像 發(fā)表于 11-01 16:51 ?885次閱讀

    多臺(tái)倉(cāng)儲(chǔ)AGV協(xié)作全局路徑規(guī)劃算法的研究

    多AGV動(dòng)態(tài)路徑規(guī)劃需解決沖突避免,核心在整體協(xié)調(diào)最優(yōu)。規(guī)劃時(shí)考慮道路設(shè)計(jì)、擁堵、最短路徑和交通管制,用A*算法避免重復(fù)路徑和轉(zhuǎn)彎,同時(shí)需交通管制防相撞。創(chuàng)新響應(yīng)需求是關(guān)鍵,良好路徑規(guī)劃
    的頭像 發(fā)表于 10-28 17:38 ?616次閱讀
    多臺(tái)倉(cāng)儲(chǔ)AGV協(xié)作全局路徑<b class='flag-5'>規(guī)劃</b>算法的研究

    放大電路動(dòng)態(tài)分析的基本方法

    放大電路動(dòng)態(tài)分析的基本方法主要包括 微變等效電路法 和 圖解法 。這兩種方法各有特點(diǎn),適用于不同的分析場(chǎng)景和目的。 1. 微變等效電路法 微變等效電路法是一種將非線性元件(如晶體管)組成的放大電路
    的頭像 發(fā)表于 09-23 10:31 ?2004次閱讀

    動(dòng)態(tài)編程增益放大器

    電子發(fā)燒友網(wǎng)站提供《動(dòng)態(tài)編程增益放大器.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 10:43 ?0次下載
    <b class='flag-5'>動(dòng)態(tài)</b>可<b class='flag-5'>編程</b>增益放大器

    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 ?4323次閱讀

    為什么有些TINA-TI仿真可以實(shí)現(xiàn)穩(wěn)態(tài)求解法分析,而有些不行?

    為什么有些TINA-TI仿真可以實(shí)現(xiàn)穩(wěn)態(tài)求解法分析,而有些不行,出現(xiàn)提示: ,無(wú)法執(zhí)行穩(wěn)態(tài)分析。 是有什么區(qū)別嗎?還是哪里需要設(shè)置嗎?
    發(fā)表于 08-08 08:28

    PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言和C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯
    的頭像 發(fā)表于 06-14 17:11 ?4204次閱讀

    嵌入式中零長(zhǎng)度數(shù)組基本操作方法

    C語(yǔ)言零長(zhǎng)度數(shù)組,聽(tīng)起來(lái)可能有點(diǎn)奇怪,因?yàn)樗鼪](méi)有分配內(nèi)存空間,無(wú)法存儲(chǔ)數(shù)據(jù)。但實(shí)際上,零長(zhǎng)度數(shù)組在Linux內(nèi)核中隨處可見(jiàn)。 零長(zhǎng)度數(shù)組的定義 首先,我們要明白什么是零長(zhǎng)度
    的頭像 發(fā)表于 05-11 08:49 ?1293次閱讀
    嵌入式中零長(zhǎng)度<b class='flag-5'>數(shù)組</b>基本操作方法