那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。 mamba out~
2020.3.9
假設資料 tank = 5
n = 3
v : 3 4 2
n\v123
4510
-1-1-15
2-12-1
-1430
2-1-12
4000
-10從搜尋的角度去考慮動態規劃問題
每個物品只有選和不選兩種可能
不合理的分支將會被減去 故上表出現很多 -1
存在已經算過的問題比如 dfs(2 , 5) 會用到 dfs(4 , 3) ,而dfs(3,5) 也會用到 dfs(4 , 3) 我們可以將第一次進入dfs(4 , 3)的時候將該狀態記錄下來,從而達到優化搜尋的目的。
這就是動態規劃問題的一種思考方式 記憶化搜尋
記憶化搜尋版本
#include #include #include using namespace std;
const int n = 20005;
const int m = 35;
int f[m][n] , n , v[n] , tank;
int dfs(int now,int space)
int f1 = -999,f2 = -999;
f1 = dfs(now + 1,space); // 表示當前物品不選
if(space >= v[now]) // 表示可以選
return f[now][space] = max(f1,f2);
}int main()
cout << tank - dfs(1,tank);
return 0;
}
遞推版本遞推式動態規劃的另外一種主要形式
#include #include #include using namespace std;
const int n = 20005;
const int m = 35;
int f[m][n] , n , v[m] , tank;
int main()
else
} } cout << tank - f[n][tank];
return 0;
}
dp動規
#include #include #include using namespace std;
const int n = 1010;
int a[n][n] ,r , f[n][n];
int main()
} int ans = 0;
for(int i = 1;i <= r ;i ++) }
cout << ans << endl;
return 0;
}
記憶化搜尋版
#include #include #include using namespace std;
const int n = 1010;
int a[n][n], f[n][n] , r;
int dfs(int i ,int j)
int l = dfs(i + 1, j);
int r = dfs(i + 1, j + 1);
return f[i][j] = max(l,r) + a[i][j];
}int main()
}
cout << dfs(1,1) << endl;
return 0;
}
執行緒狀態 Day24
執行緒狀態概述 timed waiting在api中的描述為 乙個正在限時等待另乙個執行緒執行乙個 喚醒 動作的執行緒處於這一狀態 在我們寫賣票的案例中,為了減少執行緒執行太快,現象不明顯等問題,我們在run方法中新增了sleep語句,這樣就 強制當前正在執行的執行緒休眠 暫停執行 以 減慢執行緒 ...
day24 學習總結
構造方法 date d new date string類和date類的轉換,通過dateformat類來實現轉換 dateformat為抽象類,需要通過其具體的子類來建立物件 dateformat類 構造方法 public dateformat 無參構造 public dateformat stri...
day24 物件導向基礎
要理解物件導向,我們首先要知道什麼是面向過程 面向過程 面向過程重點在過程兩個字,神馬是過程,這還要解釋嗎?我還是說下吧,過程就是一條線,乙個步驟跟著乙個步驟,更生動點的說就是像工廠裡面的流水線一樣。它的優點是很明顯的,乙個流程乙個流程的走,對於一些不需要太多修改的程式很簡單,它能把複雜的問題簡單化...