PAT A1007(動態規劃)

2021-08-24 23:40:04 字數 566 閱讀 4247

#include#include#include#include#includeusing namespace std;

#define maxn 100010

int dp[maxn],a[maxn];

int s[maxn];

int main()

if(flag==1)

dp[0]=a[0];

for(int i=1;ia[i])

else

}int k=0;

for(int i=1;idp[k])//關於i,j輸出較小值,所以不能等於

}printf("%d %d %d\n",dp[k],a[s[k]],a[k]);

return 0;

}

與求最大子串行和

不同的是此題還需要輸出開始的數和最後的數

所以需要定義乙個陣列來儲存數的下標

只有乙個數的話,只要輸出那個數即可

只是只要儲存前面的數即可

還有全為負數輸出0的判定

從一開始輸入即可 直接return0

可節省演算法時間

pat A1007 動態規劃之最長子序列和問題

題目鏈結 link 給定乙個整數序列,其中有正有負,求其最長子序列的和,以及該子串行對應的首 尾元素,如果序列全為負數,那麼則輸出和為0,以及整個序列的首 尾元素。include cstdio include iostream using namespace std int main else if...

PAT A1007 最大連續子串行和

給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子序中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大連續子串行和即為20。輸出最大和以及n i n j 如果有多種方案使得和最大,那麼輸出其中i,j 最小的一組 如果所有整數均為負數,則最大子串行和...

PAT A1045 動態規劃

該題目有兩種解法,都是動態規劃中特別經典的解法,一種是最長不下降子串行,一種是最長公共子串行 第一種方法對於該題目其實有點取巧的感覺 首先,注意一點,對於最長不下降子串行來說,其序列的元素一定是非遞減的,所以我們的當務之急是如何將值轉換為 遞增序列,從而使得演算法能夠繼續進行 對於這個問題,我們可以...