跳台阶最短路径类型题动态规划

 更新中:最短路径

//这个题还是动态规划,创造这样一个数组location make_pair(int,int)
//这个题由其他变形过来的,就比如给一个一维数组,每个位置可以跳不同的步数,问,跳
//到数组最后一位所需要的步数是多少,这两个的区别就是,所有点都是可以到达的,而不是像
//其他的问题,他们只是在跳跃的步数上来动手脚,有的类型题是,在点i可以跳的步数是arry[i]步
//又或者是说,跳跃的步数=点i的平方数,等等,无非是在你每一次跳跃的时候,多几次选择,可以调到不
//同位置,就是让步数从始至终都是不同的,这种类型题我可以找一找 


//思路:
vector<pair(int,int)>location ;          //这个location存的是每个点的坐标x,y
vector<int>dp(n,INT_MAX);                   //dp[i]表示到大点i最少的步数

                                //在这个平面上每个location都可以到达其它地方 没有限制
                                //在点i之前所有的点都可以到达点i,所以
for(int i=1;i<n;i++)
{
   for(int j=0;j<i;j++)
     {
           int distance=abs(location[j].first-location[i].first)+abs(location[j].second-location[i].second

                                //distance代表从点 j到点i的绝对值距离 abs()为绝对值函数
                                 //然后在这些所有可能到达i的距离中找出最小值

dp[i]=min(dp[i],dp[j]+disatance);
      }
}

猜你喜欢

转载自blog.csdn.net/qq_40086556/article/details/81353803