浙大PAT甲級 1045

2021-07-17 03:23:42 字數 470 閱讀 7513

這個題考查dp,最長非遞減序列。

dp[i]表示以a[i]為結尾的最長非遞減序列。初始化dp為1,狀態轉移方程為dp[i]=max(1,dp[j]+1)(j特別注意:沒有出現在最喜愛的序列中的數,其優先順序為0,在考慮最長非遞減序列時,應直接忽略0。

ac**:

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

mapmm;

int a[10005];

int dp[10005];

int main()

int l;

cin>>l;

for(int i=0;i>a[i];

if(mm.find(a[i])==mm.end())

else

}for(int i=0;imaxx)

}cout<

浙大pat甲級 1024

可用3個vector來進行處理,先將輸入的數字都壓入到第1第2個vector中,從i 0到k迴圈判斷是否為對稱數,如果不是對稱數則將其與倒轉數相加,並將得到的每一位數加入到第三個vector的頭部,並將新的第三個vector重新賦值給第一第二,直到該數為對稱數或i k結束迴圈。ac include ...

浙大PAT甲級 1039

一開始想到用map 但是會超時。由於題目中的名字由三個字母和乙個數字組成,因此有26 26 26 10種,因此可以用hash來做。使用setmm max max 26 26 26 10 5 同時輸入名字時也應改為char s 5 scanf來輸入。ac include include include...

浙大PAT甲級 1051

判斷序列是否能夠通過大小為m的棧得來。主要考察棧的模擬。當棧為空時,或者棧頂不等於該值且棧的容量跳出迴圈如果棧頂不等於該值則是不合理,如果等於則彈出棧頂繼續迴圈。ac include include include include include include include include in...