原題
題意:給定乙個h*w的地圖,起點是(1,1),終點是(h,w)。地圖上『#』無法穿過,移動規則是向下、向右、向右下方移動,一次移動格數不限,就是不可以穿過『#』,現在為從起點到終點的方案(對1e9+7)取模。
思路很明顯的dp.dp[i][j]表示到第i行第j列的方案數,如果從左邊轉移過來的話就是 dp[i][j]+=dp[i][j-k] (k=1,2,3,…,j-1),如果map[i][j-k]=『#』就停下來,剩下兩個方向同理。但是這麼寫的話複雜度是o(n3),肯定超時,我們可以用字首和優化,cnt[k][i]j表示3個方向上的方案總數,每次算乙個dp[i][j]我們就更新cnt[k][i][j],這樣算下乙個dp[i][j]直接加上就行了。
ac**`
#include
using
namespace std;
typedef
long
long ll;
const
int mod =
1e9+7;
char mmap[
2005][
2005];
ll dp[
2005][
2005
], cnt[
2005][
2005][
3];int
main()
} dp[1]
[1]=
1ll;
for(
int i =
1; i <= n; i++
)else}}
cout << dp[n]
[m];
return0;
}
18 儲存過程
建立儲存過程 sql server 2000 以下例子使用的是jdbc driver2.0 企業管理器 儲存過程 建立儲存過程 例一 讀取資料的儲存過程 create procedure selectinfo asselect from dtree go在jsp中呼叫該儲存過程selectinfo方...
18 雜湊演算法
定義將任意長度的二進位制值串對映成固定長度的二進位制值串,這個對映的規則就是雜湊演算法,而通過原始資料對映之後得到的二進位制值串就是雜湊值。如何設計乙個優秀的雜湊演算法?1 單向雜湊 從雜湊值不能反向推導出雜湊值 所以雜湊演算法也叫單向雜湊演算法 2 篡改無效 對輸入敏感,哪怕原始資料只修改乙個bi...
18 選擇水果
lang en charset utf 8 titletitle select style head all multiple multiple 蘋果option 橘子option 梨option 西瓜option 水蜜桃option select type button value id btn1...