上面談到用dp做最大連續子串行,後來又看到另一種方法:
網上說是乙個專家提出,確實挺簡單的,具體證明就不給出了,大家有興趣的可以網上找找。
如果實在不理解就先敲幾遍記住吧。。。。。
題意:也是給出一列數,求其中最大的連續序列和,和首尾排位數;
輸入:第一行是測試例子數,然後跟n行例子。輸出:兩行,第一行是case %d: 第二行依次是 最大和,首尾排位數,末尾排位數。
例子:2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
case 1:
14 1 4
case 2:
7 1 6
現給出ac**:
#includeintmain()
if(sum<0
)
}printf(
"case %d:\n%d %d %d\n
",t-t,maxs,st,ed);
if(t)printf("\n"
); }
return0;
}
用dp過的**:
#includeintmain()
maxn=-1001
;
for(i=1;i<=m;i++)
if(sum[i]>maxn)
maxn=sum[i],ed=i;
st=ed;
for(i=ed-1;i>=1;i--)
if(sum[i]>=0
) st=i;
else
break
; printf(
"case %d:\n%d %d %d\n
",n-n,maxn,st,ed);
if(n)printf("\n"
); }
return0;
}
hoj1231最大連續子串行
題目鏈結 這道題屬於經典的動態規劃,核心思想即為dp i max a i dp i 1 a i 這道題給了我最大的收穫就是要仔細讀題,要麼少看要求,要麼看串要求。如下 include include using namespace std int a 10000 dp 10000 int main ...
最大連續子串行之和,最大連續子串行乘積
最大連續子串行之和問題描述為 陣列中里有正數也有負數,連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和,求所有子陣列的和的最大值。分析,對陣列a進行一遍掃瞄,sum i 為前i個元素中,包含第i個元素且和最大的連續子陣列,maxsum儲存當前子陣列中最大和,對於a i 1 來說,sum i ...
最大連續子串行
e 最大連續子串行 description 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和 為20。在今年的資料結構考卷中,要求編寫程式得到最大和,現在增加乙個要求,即還需要輸出該 子串行...