演算法 關於最小子串和的擴充套件

2021-06-22 02:54:17 字數 407 閱讀 5624

子串是連續的,子串行是不連續的。最大子串和用遞迴:f[i]=max(f[i-1]+a[i],f[i]}。最大子串乘積:維護最大和最小值。

最小的子串和的絕對值:例如-1 【-6 5 1】 3 2 -3,是0。這個問題怎麼求呢?

首先維護乙個sum陣列,sum[i]=a[0]+a[1]+...+a[i],然後就是求某兩個|sum[j]-sum[i]|的最小值。

再把sum陣列排序,結果為min。

下面的程式中的list.pos用於維護下標,可以不要。

public class test

} collections.sort(list,com);

int rst=math.abs(list[0].sum-list[1].sum);

int temp;

for(i=1;i

找符合條件的最小子串

例項 s adobecodebanc t abc s最小符合條件t的最小子串為 banc algorithm 這裡首先要把t串字元放在雜湊表中,碰到t中字元則減1,這裡要注意hash中的個數可以為負數,因為比如abbbbbbca 找到abc很明顯是最後乙個子串,遍歷到後面的b時,它可能有用。那麼怎麼...

求包含所有顏色的最小子串

求包含所有顏色的最小子串 演算法 對顏色編號,以顏色為鍵用陣列儲存子串中該色最後出現位置,未出現顏色賦值為 1,colorsize記錄子串中已出現顏色數,當顏色都包含時比較串長,並儲存此時子串資訊 public class allcolor if colorsize m int firstcolor...

包含給定字符集的最小子串

給定乙個字元集合must 0,m 1 和乙個字串str 0,n 1 假定n m 找出str 中包含must 中所有字元的最短子串。例如 給乙個字串s1,和乙個小串s2,求演算法能在s1中找到包含s2裡所有字元的最小子串。比如 s1 adobecodebanc s2 abc 最小子串是 banc 要求...