#include
using namespace std;
#define n 4
void maxhe(int a,int &s,int &jmin,int &jmax)
int sum=a[0],b=a[0],x=0,y=0;
int j=1;
while((j-xif(b>=0)
b=a[j%n];
if(jx=j;
else
break;
else
b+=a[j%n];
if(sum>=b)
j++;
sum=0;
for(int i=y+1;isum+=a[i%n];
s=sum;jmin=y+1;jmax=x+n-1;
int z=y%n;
if(x>=z)
j=1;sum=a[0];b=a[0];x=0;y=0;
while(jif(b<0)
else
b+=a[j%n];
if(sum<=b)
j++;
s=sum;jmin=x;jmax=y;
else if((x==0)&&(y==(n-1)))
sum=a[0];b=a[0];x=0;y=0;
for(int o=1;oif(a[o]>sum)
s=sum;jmin=x;jmax=y;
int main()
int a[n][n];
for(int i=0;ifor(int j=0;ja[i][j]=rand()%6;
if(rand()%2==1)
a[i][j]=a[i][j]*(-1);
cout<<"隨機生成的二維陣列為:"int max=a[0][0],c1=0,c2=0,l1=0,l2=0;
for(int i=0;ifor(int j=i;jint b[n]=;////////////////定義可以存放各行相加和的陣列
for(int k=0;kfor(int l=i;l<=j;l++)
b[k]+=a[l][k];
coutmaxhe(b,s,jmin,jmax);
if(s>=max)
coutfor(int j=c1;j<=c2;j++)
cout思路:從第一行開始,加一行加兩行,一直將所有的二維陣列轉換成幾個一維陣列,再將上次做的一維陣列首尾相接最大字數組合做成函式呼叫。
感受:每次都是她來程式設計,下次我一定自己編,不管能不能做出來吧,總得試試。
首尾相連的二維陣列最大子陣列求和
題目 返回乙個二維整數陣列中最大子陣列的和。要求 輸入乙個二維整形陣列,陣列裡有正數也有負數。二維陣列首尾相接,象個一條首尾相接帶子一樣。n陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 結對程式設計要求 兩人結對完成程式設計任務。一...
首尾相連陣列的最大子陣列和
1.求0 n 1的最大子陣列和 m 1 2.求跨越 n 1和0的最大子陣列和,分別求從0開始的最大和m 21,從n 1開始的最大和m 22,分別記錄得到最大和的位置pi,pj,這裡分兩種情況考慮 a.pib.pi pj,則求0 n 1的最小子陣列和m 3,及0 n 1的和mx m max m 1,m...
首尾相連陣列的最大子陣列和
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...