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 }

 

posted @ 2013-07-29 11:15  水门  阅读(144)  评论(0编辑  收藏  举报