自学内容网 自学内容网

每日一题 403. 青蛙过河

403. 青蛙过河

动态规划,状态转移 和 上一步步长 和 当前位置点 有关系

class Solution {
public:
    bool canCross(vector<int>& stones) {
        int n = stones.size();

        unordered_map<int,unordered_set<int>> dp;
        unordered_map<int,int> mp;
        for(int i=0;i<n;++i)
        {
            unordered_set<int> st;
            dp[i] = st;
            mp[stones[i]] = i;
        }

        dp[0].insert(0);
        for(int i=0;i<n;++i)
        {
            for(int k : dp[i])
            {
                for(int jump : {k-1,k,k+1})
                {
                    if(mp.count(jump+stones[i]))
                    {
                        
                        int idx = mp[jump+stones[i]];
                        //cout<<i<<" "<<k<<" "<<jump+stones[i]<<endl;
                        dp[idx].insert(jump);

                    }
                }
            }
            
        }
        return dp[n-1].size() != 0;
    }
};

原文地址:https://blog.csdn.net/qq_42376925/article/details/145099611

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!