国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
存在一個(gè)數(shù)組,找出連續(xù)數(shù)之和最大的一段

#include<iostream>

using namespace std;

/************************************************************************/

/*6有一個(gè)數(shù)組a[n],里面的數(shù)只有兩種:-11。

i,j是兩個(gè)整數(shù),假設(shè)0<=i<=j<=n-1,找出a[i]a[j]中連續(xù)數(shù)之和最大的部分(如果最大部分存在相等的則優(yōu)先找最短的)。

                                                                    */

/************************************************************************/

 

#include <iostream>

using namespace std;

typedef struct node

{ 

       int begin;

       int end;

}Node;

 

void Find(int number[], int length)

{

       if(length == 0)//如果數(shù)組為空直接返回

              return;

       int Max = number[0], Acclulate = number[0];//初始化最大值為數(shù)組的第一個(gè)值

       Node *Position = new Node[length];//用于存取到當(dāng)前位置可能的最大值

       Node MaxPosition = {0, 0};//初始化最大的起始位置和終止位置

       Position[0].begin = 0;

       Position[0].end = 0;

      

       for(int i = 1; i < length; i++)

       {

              if(Acclulate > 0)//前面的累積和大于零時(shí),起始位置固定,而終止位置每次都往后移動(dòng)一個(gè)位置

              {

                     Position[i].begin = Position[i - 1].begin;//起始位置固定,只需取前一個(gè)節(jié)點(diǎn)的值.begin即可

                     Position[i].end = Position[i - 1].end + 1;//終止位置每次都往后移動(dòng)一個(gè)位置:前一個(gè)節(jié)點(diǎn)的值.end+1

                     Acclulate += number[i];//此時(shí)判斷number[i]有效,計(jì)入 累積和Acclulate

                     if(Acclulate > Max)//如果 重新計(jì)算后的 累積和Acclulate大于 Max

                     {

                            Max = Acclulate;

                            MaxPosition = Position[i];//重新定位 最大的起始位置和終止位置

                     }

//                   cout<<"前面的累積和大于=>>";

//                   cout<<"起點(diǎn)number["<<MaxPosition.begin<<"]="<<number[MaxPosition.begin]

//                   <<",終點(diǎn)number["<<MaxPosition.end<<"]="<<number[MaxPosition.end]<<endl;

              }

              else//前面的累加和小于等于 零,  則重新設(shè)定起始位置和終止位置

              {

                     Position[i].begin = i;

                     Position[i].end = i;

                     Acclulate = number[i];

                     if(number[i] > Max)//如果當(dāng)前number[i]大于Max,則重新設(shè)定起始位置和終止位置,否則保持不變

                     {

                            Max = number[i];

                            MaxPosition =  Position[i];

                     }

//                   cout<<"累加和小于等于=>>";

//                   cout<<"起點(diǎn)number["<<MaxPosition.begin<<"]="<<number[MaxPosition.begin]

//                   <<",終點(diǎn)number["<<MaxPosition.end<<"]="<<number[MaxPosition.end]<<endl;

              }

       }

       cout <<endl<< "最大的值為:" << Max << endl;

       cout <<"起點(diǎn)number["<<MaxPosition.begin<<"]="<<number[MaxPosition.begin]

              <<",終點(diǎn)number["<<MaxPosition.end<<"]="<<number[MaxPosition.end]<<endl;

       cout << "他們分別為:";

       for( i = MaxPosition.begin; i <= MaxPosition.end; i++)

              cout << number[i] <<" ";

       cout << endl;

 

       delete [] Position;

      

}

 

int main(void)

{

       /************************************************************************/

       /*最大的值為:5

起點(diǎn) number[0]=3,終點(diǎn)number[8]=1

他們分別為:3 -1 -1 1 1 -1 1 11

       */

       /************************************************************************/

//     inta[10]={3,-1,-1,1,1,-1,1,1,1,-1};//總數(shù)是從09

 

       /************************************************************************/

       /* 最大的值為:4

       起點(diǎn)number[3]=1,終點(diǎn) number[8]=1

       他們分別為:1 1 -1 11 1

       */

       /************************************************************************/

       //inta[10]={2,-1,-1,1,1,-1,1,1,1,-1};//總數(shù)是從09

 

 

       /************************************************************************/

       /*最大的值為:3

起點(diǎn) number[0]=3,終點(diǎn)number[0]=3

他們分別為:3

 

       */

       /************************************************************************/

       //inta[10]={3,-1,-1,-1,1,-1,1,1,1,-1};//總數(shù)是從09

 

       /************************************************************************/

       /*最大的值為:3

起點(diǎn) number[6]=1,終點(diǎn)number[8]=1

他們分別為:1 1 1

       */

       /************************************************************************/

       //inta[10]={2,-1,-1,-1,1,-1,1,1,1,-1};//總數(shù)是從09

      

       /************************************************************************/

       /*

最大的值為:-1

起點(diǎn) number[1]=-1,終點(diǎn) number[1]=-1

他們分別為:-1

Press any key to continue

       */

       /************************************************************************/

       int a[10]={-2,-1,-1,-1,-1,-1,-1,-1,-1,-1};//總數(shù)是從09

      

       Find(a, 10);

       return 0;

}

 

 

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C++
貪吃蛇游戲源代碼(C++)
c++ vector用法(1)
273 類的作用域
通訊錄排序
關(guān)于24點(diǎn)游戲的編程思路與基本算法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服