DP26. 跳跃游戏(一)
描述
输入描述
输出描述
输出 true 或者 false示例1
输入:
7 2 1 3 3 0 0 100
输出:
true
说明:
首先位于nums[0]=2,然后可以跳2步,到nums[2]=3的位置,再跳到nums[3]=3的位置,再直接跳到nums[6]=100,可以跳到最后,输出true示例2
输入:
7 2 1 3 2 0 0 100
输出:
false
说明:
无论怎么样,都跳不到nums[6]=100的位置Rust 解法, 执行用时: 12ms, 内存消耗: 3336KB, 提交时间: 2022-07-05
use std::io; fn main() { let st = io::stdin(); let mut n = String::new(); st.read_line(&mut n).expect("Failure"); let n:usize = n.trim().parse().expect("Failure"); let mut nums = String::new(); st.read_line(&mut nums).unwrap(); let nums = nums.trim() .split_whitespace() .map(|s| s.parse::<usize>().unwrap()) .collect::<Vec<usize>>(); let mut farthest = 0usize; for i in (0..n-1) { farthest = farthest.max(i + nums[i]); if farthest <= i { println!("{}", false); return; } } println!("{}", farthest >= n-1); }
C++ 解法, 执行用时: 20ms, 内存消耗: 1164KB, 提交时间: 2022-05-07
#include <cstdlib> #include <algorithm> #include <cstdio> using namespace std; int main() { int n; scanf("%d", &n); int num[200005]; int maxLen = 0; for (int i = 0; i < n; ++i) { scanf("%d", &num[i]); if(i>maxLen) break; maxLen = max(maxLen, i + num[i]); if (maxLen >= n - 1) { printf("true\n"); return 0; } } printf("false\n"); return 0; }
C++ 解法, 执行用时: 21ms, 内存消耗: 2508KB, 提交时间: 2022-03-24
#include"iostream" using namespace std; int main() { ios::sync_with_stdio(false); int n,a[200005],reach = 0; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<=reach&&reach<n-1;i++) { reach = max(reach,i + a[i]); } if(reach>=n-1) cout<<"true"; else cout<<"false"; return 0; }
C 解法, 执行用时: 25ms, 内存消耗: 1136KB, 提交时间: 2022-02-16
#include <stdio.h> int max(int a,int b) { return a>b?a:b; } int main() { long long n,i,j,t,maxi=0; int q = 1; int arr[200002] = {0}; int dp[200002] = {0}; scanf("%d",&n); for( i= 0; i < n;i++) { scanf("%d",&arr[i]); } for(i = 0;i<n;i++) { if(i > maxi) { q = 0; printf("false"); break; } maxi = max(maxi,i+arr[i]); if(maxi >= n-1) { q = 1; } } if(q) { printf("true"); } return 0; }
C++ 解法, 执行用时: 25ms, 内存消耗: 1252KB, 提交时间: 2022-03-15
#include<bits/stdc++.h> using namespace std; int main(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; cin>>n; vector<int>arr(n,0); for (int i = 0; i < n;++i){ cin>>arr[i]; } int len = arr[0]; for (int i = 1; i < n; ++i){ len = ((len >= i) ? max(arr[i] + i,len) : len); } cout << ((len >= n - 1) ? "true" : "false"); return 0; }