在《程式設計之美》看到這樣的題:
求連續子串行和最大
int longmaxarraycount(int data,int n)
tempone=0;
i++;
} }return targe;
}
變形1:n個整數,求其中任意n-1個數的乘積中的最大的乙個,不能用除法。
n個數的乘積為p
(1)p的值為正,則除去乙個最小的正數
(2)p的值為負,則去除乙個最大的負數
(3)p的值為0,
a.有且只有乙個0,若其他積為正,除去乙個0,,否則除去乙個最大的負數
b.2個以上0,除去乙個0;
變形2:
連續子串行積最大
【演算法分析】
經過上面的分析,我們得到以下演算法:
1、從左邊開始,依次掃瞄陣列,同時用tmp儲存到當前的數的乘積。若tmp為0,則tmp置1,繼續掃瞄;若tmp大於最大值result,則儲存,繼續掃瞄;
2、從右邊開始,反方向重複過程1。
#include #include using namespace std;
//找到長度為n的arr陣列中最大的連續積
long long findmax(int arr, int n)
if(tmp > result)result = tmp;
}//從右往左掃瞄
tmp = 1;
for(int i = n-1; i >= 0; i--)
if(tmp > result)result = tmp;
}return result;
}int main()
**:
最長子序列
最長子序列可以說是剛接觸動態規劃的人經常遇見也不得不解決的問題,最常見的有兩種,一種是最長公共子串行 lcs 還有乙個是最長上公升子串行 lis 今天我就總結下這兩個的做法。一 最長公共子串行 lcs 題目描述 給你兩個陣列,可以是數字的,也可以是字串,我們假設是數字的!舉個例子 x 1,5,6,4...
最長子序列
在做oj題目的時候,經常會用到字串的處理。例如,比較二個字串相似度。這篇文章介紹一下求兩個字串的最長公共子串行。乙個字串的子串行,是指從該字串中去掉任意多個字元後剩下的字元在不改變順序的情況下組成的新字串。最長公共子串行,是指多個字串可具有的長度最大的公共的子串行。include includech...
最長子序列
題 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6。思路1 第一眼看到題目,很多人肯定第一時間想到的是lcs。先給陣列排個序形成新陣列,然後再把新陣列和原陣列拿來求lcs,即可得到答案。這種解法很...