uva 825
題意:給定乙個網格圖(街道圖),其中有一些交叉路口點不能走。問從西北角走到東南角最短走法有多少種。(好像沒看到給資料範圍。、。)
簡單的遞推吧,當然也就是最簡單的動歸了。顯然最短路長度就是row+col。求種數就從開始往後推。
由於第一行第一列也有可能是障礙點,所以初始化時要注意這一點,或者乾脆就只初始化f[0][1]=1。i、j都從1開始遞推到更方便。還有題目輸入輸出比較坑。輸入我用的是sstream和stream,方便很多,要不還要按照字串輸入再手動轉化成數字。輸出讓每組隔一行,但最後一組沒有,用while(t)控制。
1 #include2 #include3 #include4 #include5 #include6 #include7
using
namespace
std;
8const
int maxn = 4006;9
intg[maxn][maxn], f[maxn][maxn];
10int
row, col, res;
1112
intmain()
1333
}34 memset(f, 0, sizeof
(f));
35 f[0][1] = 1;36
for (int i = 1; i <= row; i++) 41}
42 printf("
%d\n
", f[row][col]);
43if (t) printf("\n"
);44}45
return0;
46 }
UVa 926 簡單dp,遞推
uva 926 題意 給定n n的街道圖和起始點,有些街道不能走,問從起點到終點有多少種走法。很基礎的dp 遞推,但是有兩個地方需要注意,在標記當前點某個方向不能走時,也要同時標記對應方向上的對應點。另一點就是要開long long存。要是不考慮障礙的話,按組合數算從 1,1 走到 n,n 需要2 ...
uva11795 簡單狀態壓縮DP
一看到n 16就想到狀態壓縮dp了,而且只要儲存這個狀態就行了 轉移時也用狀態壓縮的轉移方法,比較兩個二進位制數,就能知道能否從已知狀態轉移到需要的狀態 開始沒看到題目給的就是二進位制數,自己還轉換成了二進位制 還有要記得用longlong 不能因為這個wa 還有位運算還不是很熟悉,可以用異或來去掉...
uva11137遞推和DP其實有些類似
這道題大白書上是按遞推講的 分析 建立多段圖。節點 i,j 表示 使用不超過i的整數的立方,累加和為j 這個狀態,設d i,j 為從 0,0 到 i,j 的路徑條數,則最終答案為d 21,n 因為對於題目範圍,22 22 22 n 這個多段圖的特點是每個結點一步只能走到下乙個階段的結點,因此我們可以...