Leetcode 1575. 统计所有可行路径(DAY 59) ----动态规划学习期(第二题蝶直接拿下!)

原题题目

在这里插入图片描述



代码实现(首刷绝大部分自解小部分看解)

int countRoutes(int* locations, int locationsSize, int start, int finish, int fuel){
    int dp[locationsSize+1][fuel+1],restfuel,pos,des,temp,sum = 0,mod = 1000000007;
    memset(dp,0,sizeof(dp));
    dp[start][fuel] = 1;
    if(start == finish) sum++;
    for(restfuel=fuel;restfuel>0;restfuel--)
    {
       for(pos=0;pos<locationsSize;pos++)
       {
           if(dp[pos][restfuel])
           {
                for(des=0;des<locationsSize;des++)
                {
                    if(des != pos)
                    {
                        temp = fabs(locations[des] - locations[pos]);
                        if(temp <= restfuel)
                        {
                            dp[des][restfuel - temp] = (dp[pos][restfuel] + dp[des][restfuel - temp]) % mod;
                            if(des == finish)
                                sum = (sum + dp[pos][restfuel]) % mod;
                        }
                    }
                }
           }
       } 
    }
    return sum;
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页