//兩列火車入站,重新排列的車廂符不符合要求
//記憶化搜尋,ans[i][j]記錄的是第一列火車的第i節和第二列火車的第j列在組合後的序列裡找不找的到
//如果找的到就標記為1,因為是從前到後搜尋,所以在ans[n][m]=1時,表示符合
#include #include#includeusing namespace std;
#define n 1005
bool ans[n][n];
int str1[n],str2[n],str3[n*2];
int n,m,t;
void solve(int n1,int n2)
if(ans[n1][n2]) return ;
ans[n1][n2]=1;
if(str3[n1+n2+1]==str1[n1+1]&&!ans[n][n])
solve(n1+1,n2);
if(str3[n1+n2+1]==str2[n2+1]&&!ans[n][n])
solve(n1,n2+1);
}int main()
return 0;
}
hdu2452 記憶化搜尋
一顆樹,邊是單向的,每個節點有一定的權值,要你從根節點走到葉子節點,走到第偶數節點時,使後面的權值和最小 走到第奇數節點時,使後面的權值和最大 邊鍊錶儲存,並查集查詢根節點 用val i 0 表示第i個節點是偶數節點的值和val i 1 表示第i個節點是奇數節點的值 遞迴的計算,因為節點很多,所以要...
hdu1069 記憶化搜尋
此題思路還是比較清晰的,對於每個x,y,z,都會有三種情況,dp i 表示把第i個放在最下面得到的最大高度,狀態轉移方程為dp i max dp i dp j height 這裡的j要滿足能夠放在i上面,height為第i個矩形的高度 如下 include include include inclu...
hdu 1078 記憶化搜尋
hdu 1078 題意 每次可以朝乙個方向走k格,必須走到乙個數值比當前值大的點,問最多數值加起來能有多少,走到不能再走。一開始定義錯了,定義dp i j 為以 i,j 為終點時所能得到的最大值。dp i t dx j t dy max dp i t dx j t dy dp i j a i t d...