第一感覺是定義狀態f[n][i][j][k][kk],但這樣空間和時間都承受不下。我們可以設狀態為f[i][j][k][kk],這樣可以省掉乙個n,因為我們依據行走步數可以直接算出行走距離.
code:
#include
#include
using
namespace
std;
const
int maxn = 42;
long
long f[maxn][maxn][maxn][maxn];
int val[400], steps[10];
inline
int dist(int a,int b,int c,int d)
int main()
f[0][0][0][0] = val[0];
for(int i = 0;i <= steps[1]; ++i)
for(int j = 0;j <= steps[2];++j)
for(int k = 0;k <= steps[3]; ++k)
for(int kk = 0; kk <= steps[4]; ++kk)
printf("%lld",f[steps[1]][steps[2]][steps[3]][steps[4]]);
return
0;}
洛谷 P1540 機器翻譯
小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯 如果記憶體中沒有,軟體就會在外存中的詞典內查詢,查...
洛谷 P1540 機器翻譯
小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯 如果記憶體中沒有,軟體就會在外存中的詞典內查詢,查...
洛谷P1540 機器翻譯
題目鏈結 題意 計算機有m個記憶體,每個記憶體可以存乙個單詞,如果計算機記憶體裡儲存某些單詞,則不需要向外界搜尋,如果有新的單詞,計算機就會把記憶體中第乙個單詞刪除並新增這個新的單詞,現在要你求總共需要新增多少個,一開始內容為空。思路 開乙個vector容器,每次遍歷即可,主要想練練vector。w...