码迷,mamicode.com
首页 > 其他好文 > 详细

拜访-动态规划

时间:2016-09-10 10:19:58      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

现在有一个城市销售经理,需要从公司出发,去拜访市内的商家,已知他的位置以及商家的位置,但是由于城市道路交通的原因,他只能在左右中选择一个方向,在上下中选择一个方向,现在问他有多少种方案到达商家地址。

给定一个地图map及它的长宽nm,其中1代表经理位置,2代表商家位置,-1代表不能经过的地区,0代表可以经过的地区,请返回方案数,保证一定存在合法路径。保证矩阵的长宽都小于等于10。

测试样例:
[[0,1,0],[2,0,0]],2,3
返回:2


 1 lass Visit {
 2 public:
 3     
 4    
 5     int countPath(vector<vector<int> > map, int n, int m) {
 6         // write code here
 7         int x1,y1;
 8         int x2,y2;
 9         for(int i=0;i<n;i++)
10         {
11             for(int j=0;j<m;j++)
12             {
13                 if(map[i][j]==1)
14                 {
15                     x1=i;
16                     y1=j;
17                 }
18                 if(map[i][j]==2)
19                 {
20                     x2=i;y2=j;
21                 }
22             }
23         }
24         if(x1==x2&&y1==y2)
25             return 0;
26         int xt=x1<x2?1:-1;
27         int yt=y1<y2?1:-1;
28         vector<vector<int>>dp(n,vector<int>(m,1));
29         for(int i=x1+xt;i!=(x2+xt);i+=xt)
30         {
31             dp[i][y1]=map[i][y1]==-1?0:dp[i-xt][y1];
32         }
33         for(int j=y1+yt;j!=(y2+yt);j+=yt)
34         {
35             dp[x1][j]=map[x1][j]==-1?0:dp[x1][j-yt];
36         }
37         for(int i=x1+xt;i!=(x2+xt);i+=xt)
38        {
39             for(int j=y1+yt;j!=(y2+yt);j+=yt)
40             {
41                 dp[i][j]=map[i][j]==-1?0:dp[i-xt][j]+dp[i][j-yt];
42             }
43         }
44         return dp[x2][y2];
45     }
46 };

 

 

矩阵1

    0   0   1   0    0

    0  0    0   0    0

    0  0    0   0    0

    0  0    0   0    0

    0  0    0   2    0

 

dp

   0  0   1  1  1  0

   0  0   1  0  0  0

   0   0   1  0 0  0

   0    0  1  0  0  0

   0   0   1  0  0  0

 dp[i][j]=dp[i-1][j]+dp[i][j-1]

   0  0   1  1  1  0

   0  0   1  2  3  0

   0   0   1 3  6  0

   0    0  1  4 10  0

   0   0   1  5  15  0

拜访-动态规划

标签:

原文地址:http://www.cnblogs.com/ranranblog/p/5858779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!