sdut 1570 c旅行
用搜索(bfs,dfs)做了半天,都超时,原来是dp;
参考博客:http://www.cnblogs.com/liuzezhuang/archive/2012/07/29/2613820.html
1 #include <iostream> 2 #include<cstring> 3 #include<queue> 4 #include<cstdlib> 5 #include<cstdio> 6 using namespace std; 7 8 int map[30][30],b[30][30]; 9 int main() 10 { 11 int h,w,i,j; 12 cin>>h>>w; 13 14 for(i=1; i<=h; i++) 15 for(j=1; j<=w; j++) 16 cin>>map[i][j]; 17 b[h][1]=1; 18 19 for(i=h; i>=1; i--) 20 for(j=1; j<=w; j++) 21 { 22 if(map[i][j]) 23 b[i][j]=0; 24 else if(i==h&&j>1) 25 b[i][j]=b[i][j-1]; 26 else if(j==1&&i<h) 27 b[i][j]=b[i+1][j]; 28 else if(i!=h&&j!=1&&map[i][j]!=1) 29 b[i][j]=b[i+1][j]+b[i][j-1]; 30 } 31 cout<<b[1][w]<<endl; 32 return 0; 33 }