有没有大佬帮看,用例过了一个case都没过 ··· int main(){ /* case: 5 2 5 1 1 1 */ int n; cin>>n; vector<int> nums(n); vector<int> res(n,0); for (int i=0; i<n; ++i){ cin >> nums[i]; } // 两趟 int count=1; for (int i=0; i<n; ++i){ if (nums[i]+i<n){ res[nums[i]+i]=count++; } } int minStep = INT_MAX; for (int i=n-1; i>0; --i){ if (res[i]!=0){ minStep=min(minStep,res[i]+1); }else{ res[i] = minStep; } } int result = INT_MAX; // for (int i=0; i<n; ++i){ // cout << res[i] << ' '; // } for (int i=0; i<n; ++i){ if (i+nums[i]>=n){ result = min(result, res[i]+1); } } cout << result; } ···
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务