C语言 | Leetcode题解之第403题青蛙过河

题目:

题解:

cpp 复制代码
bool canCross(int* stones, int stonesSize) {
    int dp[stonesSize][stonesSize];
    memset(dp, 0, sizeof(dp));
    dp[0][0] = true;
    for (int i = 1; i < stonesSize; ++i) {
        if (stones[i] - stones[i - 1] > i) {
            return false;
        }
    }
    for (int i = 1; i < stonesSize; ++i) {
        for (int j = i - 1; j >= 0; --j) {
            int k = stones[i] - stones[j];
            if (k > j + 1) {
                break;
            }
            dp[i][k] = dp[j][k - 1] || dp[j][k] || dp[j][k + 1];
            if (i == stonesSize - 1 && dp[i][k]) {
                return true;
            }
        }
    }
    return false;
}
相关推荐
c2385631 分钟前
Bug 猎手入门指南
c++·算法·bug
Reart1 小时前
Leetcode 213.打家劫舍2(内含闲谈,打劫真是技术活,好题,716)
后端·算法
Reart2 小时前
Leetcode 198.打家劫舍(716)
后端·算法
Jerry2 小时前
LeetCode 110. 平衡二叉树
算法
玖玥拾2 小时前
C++ 数据结构 八大基础排序算法专题
数据结构·c++·算法·排序算法
Tim_103 小时前
【C++】017、new/delete与malloc/free的区别
java·数据结构·算法
从零开始的代码生活_3 小时前
C++ list 原理与实践:双向链表、迭代器与简化实现
开发语言·c++·后端·学习·算法·链表·list
无相求码3 小时前
罪魁祸首:for 括号后面那个"隐形分号"
c语言
hy.z_7773 小时前
【C语言】11. 深入理解指针1
c语言·开发语言
ttod_qzstudio4 小时前
【软考算法】软件设计师下午第四题之动态规划:0-1 背包与最长公共子序列的“填表艺术“
算法·动态规划·软考