女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C編程:“最大子數組的和” 的動態規劃的解法

嵌入式技術 ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2022-08-21 09:33 ? 次閱讀

C編程筆試 --“最大子數組的和” 的動態規劃的解法

?1.最大子數組之和

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

??功能實現:

# include 
# include 
int MaxSum(int* arr, int size)
{
    int current = arr[0]; //當前數組最大和
    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); //這個應該返回 -1, 
    max3 = MaxSum(a3, 5);
	printf("max1=%d,max2=%d,max3=%d\n",max1,max2,max3);
}

?2.獲取最大子數組的開始和結束的下標

??如果我需要返回值返回這個最大子數組的開始和結束的下標,你要怎么修改這個程序?

例1:數組int a1[5] = { -1, 5, 6, -7, 3 };其最大子數組之和為:5+6=11;最大子數組開始和結束下標為:1 2。
例2:數組int a2[5] = { -5, -4, -8, -1, -10 };其最大子數組之和為:-1;最大子數組開始和結束下標為:3 3。
例3:數組 int a3[5] = { -1, 5, 6, -7, 10 };其最大子數組之和為:5+6-7+10=14 ; 最大子數組開始和結束下標為:1 4。
例4:數組 int a3[] = {-2, -1, -3, 4, -1, 2, 1, -5, 4};其最大子數組之和為:4+(-1)+2+1=6 ; 最大子數組開始和結束下標為:3 6。
??功能實現:

#include 
#include 
void solution(int m, int *arr){
    int current=arr[0];
    int max=current;
    int start=0,end=0;
    int i=0;
    /*計算最大子數組之和*/
    for(i=1;imax)
        {
            max = current;
            end=i;//最大子數組結束下標
        }
    }
	int temp=max;
	/*計算最大子數組結束下標*/
    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("輸入個數:");
    scanf("%d", &n);
    int *arr;
    arr = (int*)malloc(n * sizeof(int));
	printf("輸入%d個整數:",n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    solution(n, arr);
    return 0;
}
;i++)>

??運行結果:

pYYBAGMBfYaAP_I9AAMUkvwWkUo576.png#pic_center

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140199
  • 數組
    +關注

    關注

    1

    文章

    419

    瀏覽量

    26361
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發表于 04-30 16:11 ?2次下載

    C++學到什么程度可以找工作?

    動態規劃、貪心算法等)。 3. **操作系統原理**:理解進程與線程、并發控制、同步機制(如互斥鎖、信號量等)、進程間通信等概念。 4. **網絡編程**:熟悉基于Socket的網絡編程
    發表于 03-13 10:19

    數組的下標為什么可以是負數

    最近有同學發來這樣一段代碼,并提出一個問題,數組的下標為什么可以是負數? ? ? #include int main(){ const char *s = "helloworld"; const
    的頭像 發表于 12-20 11:18 ?433次閱讀

    數組名之間可以直接賦值嗎

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

    指針數組和二維數組有沒有區別

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

    C語言數組應用計算機導論A第6講:數組

    C語言數組應用計算機導論A第6講:數組
    發表于 11-20 15:33 ?0次下載

    解讀版|Air780E軟件中C語言內存數組的神秘面紗!

    今天我們來揭開Air780E 軟件中 C 語言內存數組的神秘面紗,希望有所收獲。
    的頭像 發表于 11-17 10:00 ?564次閱讀
    解讀版|Air780E軟件中<b class='flag-5'>C</b>語言內存<b class='flag-5'>數組</b>的神秘面紗!

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,程序可以發送和接收數據,實現不同計算機之間的
    的頭像 發表于 11-01 16:51 ?1018次閱讀

    多臺倉儲AGV協作全局路徑規劃算法的研究

    多AGV動態路徑規劃需解決沖突避免,核心在整體協調最優。規劃時考慮道路設計、擁堵、最短路徑和交通管制,用A*算法避免重復路徑和轉彎,同時需交通管制防相撞。創新響應需求是關鍵,良好路徑規劃
    的頭像 發表于 10-28 17:38 ?711次閱讀
    多臺倉儲AGV協作全局路徑<b class='flag-5'>規劃</b>算法的研究

    放大電路動態分析的基本方法

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

    動態編程增益放大器

    電子發燒友網站提供《動態編程增益放大器.pdf》資料免費下載
    發表于 09-07 10:43 ?0次下載
    <b class='flag-5'>動態</b>可<b class='flag-5'>編程</b>增益放大器

    labview字符串數組轉化為數值數組

    在LabVIEW中,將字符串數組轉換為數值數組是一項常見的任務,尤其是在處理數據采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數據類型 在開始之前,了解LabVIEW中的數據類型是非
    的頭像 發表于 09-04 17:47 ?4779次閱讀

    面試常考+1:函數指針與指針函數、數組指針與指針數組

    在嵌入式開發領域,函數指針、指針函數、數組指針和指針數組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率和質量至關重要。一、指針函數與函數指針指針函數:定義:指針
    的頭像 發表于 08-10 08:11 ?1317次閱讀
    面試常考+1:函數指針與指針函數、<b class='flag-5'>數組</b>指針與指針<b class='flag-5'>數組</b>

    為什么有些TINA-TI仿真可以實現穩態求解法分析,而有些不行?

    為什么有些TINA-TI仿真可以實現穩態求解法分析,而有些不行,出現提示: ,無法執行穩態分析。 是有什么區別嗎?還是哪里需要設置嗎?
    發表于 08-08 08:28

    PLC編程語言和C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯
    的頭像 發表于 06-14 17:11 ?4366次閱讀