最優子串行(c )

2022-10-09 09:39:10 字數 536 閱讀 3725

參考:

#include

#include//這個標頭檔案可以使用max(,),*max_element(,)

using namespace std; //它們的含義分別是:求兩者最大;求陣列最大

int n,a[1002],f[1002];

int main()

for(int i=1;i<=n;i++) //列舉i的位置

for(int j=1;ja[j]) //如果滿足條件,則第i個數可以放在j後邊

f[i]=max(f[j]+1,f[i]);//取較大的一種再放

printf("%d",*max_element(f+1,f+n+1));//從 f[1]到f[n] 找最大值

return 0;

}對於一串陣列,逐個選取,作為子串的最末(最大值)

類似於乙個巢狀,即,例如:在第五個選到第四個可以排在前面,第四個可以排在前面的第三個**進來,第三個可以排在前面的第乙個再**進來;每次只選取可排在前面的乙個,即先做整個陣列的遍歷,再做選取的之前的子序遍歷。

最優子矩陣

上一題 有序數對 最優子矩陣 題目描述 給定乙個n n的矩陣 對於乙個k k的子矩陣 k任意 設a為其主對角線上的元素之和 主對角線即左上 右下對角線 設b為其副對角線上的元素之和 求乙個k k的子矩陣,使得其a b最大。輸入資料 第一行乙個整數n,表示矩陣的大小,以下n行,每行n個數,描述這個矩陣...

動態規劃 最長公共子串行LIS dp 最優解

某國為了防禦。算了,簡單就是乙個長度為n的數列,求最長降序 允許相等 序列是不連續的,在陣列中找乙個最長公升序看有幾項 思路 反向求降序,可以用輔助陣列,但這道題用乙個變數就可以做記錄 這裡給dp版本訓練思維 public class lis dp int dp new int arr.length...

最大連續子串行和 最優起點演算法

設num i 為和最大序列的起點,則如果num i 是負的,那麼它不可能代表最優序列的起點,因為任何包含num i 作為起點的子串行都可以通過num i 1 作起點而得到改進。int sum 0,maxsum 1000 考慮到序列全為負權的情況 for int i 1 i n i n為序列長度 ma...