1. 程式人生 > >計蒜客 跳躍遊戲

計蒜客 跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。

陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。

請確認你是否能夠跳躍到陣列的最後一個下標。

例如:

A = [2,3,1,1,4],

return true.

A = [3,2,1,0,4],

return false.

格式:

第一行輸入一個正整數n,接下來的一行,輸入陣列A[n]。如果能跳到最後一個下標,輸出“true”,否則輸出“false”

樣例輸入

5
2 0 2 0 1
樣例輸出

true

做這個題首先 感覺是隻要跳到最後一個就行了
然後

#include <iostream>
#include <iomanip> #include <cstring> #include <stdio.h> #include <algorithm> #include <cmath> using namespace std; int a[5000000],b[5000000]; int main() { int n; while(cin>>n) { memset(b,0,sizeof(b)); int i,j; for(i=0;i<n;i++) cin>>a[i]; b[0
]=1; for(i=0;i<n;i++) { int k=i; if(b[i]) for(j=i;j<=k+a[i];j++) { b[j]=1; } } if(b[n]==1) cout<<"ture"; else cout<<"false"; cout<<endl; } }

這個程式碼赤裸裸的wr

然後發現此程式碼的漏洞
就是說 如果中間存在斷路 但是後面接上的那種情況
這個程式碼就無法通過

然後改下

#include <iostream>
#include <iomanip>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
int a[5000000],b[5000000];
int main()
{
    int n;
    while(cin>>n)
    {
        memset(b,0,sizeof(b));
        int i,j;
        for(i=0;i<n;i++) cin>>a[i];
        b[0]=1;
        for(i=0;i<n;i++)
        {
            int k=i;
            if(b[i])   //如果沒有斷路就繼續
            for(j=i;j<=k+a[i];j++)
            {
                b[j]=1;
            }
            else   //如果出現斷路 就證明根本跳不到
            {
                cout<<"false"<<endl;
                return 0;
            }
        }
        cout<<"true"<<endl;
    }
}


#include<iostream>
#include<vector>
using namespace std;

bool tiao(vector<int> ivec,int n)
{
    if(n==1)//只有一個元素, 返回true
        return true;
    int i=0;
    while(i<n-1)
    {
        i += ivec[i];
        if(ivec[i]==0 && i!=n-1)//當某一元素為0,並且它不是最後一個元素時,一定跳不到最後一個下標
        {
            return false;
        }
        if(i==n-1)
        {
            return true;
        }
    }
}

int main()
{
    vector<int> ivec;
    int num,m,n;
    cin >>num;
    n=num;
    while(num>0)
    {
        cin>>m;
        ivec.push_back(m);
        num--;
    }
    if(tiao(ivec,n))
        cout<<"true"<<endl;
    else
        cout<<"false"<<endl;
    return 0;

}

這兩個程式碼 都能ac
7
2 3 0 3 2 0 0

這組測試資料的答案不一樣

  • -然後還是都能a
    嗯 費解會兒

相關推薦

-跳躍遊戲二 (簡單dp)

inf PE sizeof size stream 分析 數組初始化 整數 CA 題目鏈接:https://nanti.jisuanke.com/t/20

跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如: A = [2,3,1,1,4], return true. A = [3,2,1,0,

-跳躍遊戲

似乎是用DP但我一看就是個圖而且只有100個點想都沒想 floyd模板套上通過#include<bits/stdc++.h> using namespace std; const int maxn=108; int mp[maxn][maxn]; int main

跳躍遊戲

華電北風吹 天津大學認知計算與應用重點實驗室 日期:2015/12/4 題目型別: 動態規劃,廣度優先搜尋 題目描述: 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。陣列中

跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如:A = [2,3,1,1,4]A=[2,3,1,1,4] 能夠跳躍到最後一個下標,輸出true; A

————跳躍遊戲

 30.18%  1000ms  65536K 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 你的目標是到達最後一個下標,並且使

-跳躍遊戲二(dp)

跳躍遊戲二 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 你的目標是到達最後一個下標,並且使用最少的跳躍次數。 例如: A = [2,3,1,1,4], 到達最後一個下標的最少跳躍次數為

跳躍遊戲 貪心

對於當前位置可以到達的一堆點,我們肯定是選擇那個能到達最遠距離的點。 不如當前點1,能到達2,3,4. 而2能到達3,4;3能到達4;4能到達5,6,7. 那麼我們肯定是選擇從1直接到4,因為4能到達

——乘法遊戲

乘法遊戲是在一行牌上進行的。每一張牌包括了一個正整數。在每一個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。        你的目標是使得分的和最小。例如,如果數是10  1  50  20  5,依次拿1、20、50,總分是1

—— 乘法遊戲

乘法遊戲是在一行牌上進行的。每一張牌包括了一個正整數。在每一個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。你的目標

乘法遊戲

乘法遊戲是在一行牌上進行的。每一張牌包括了一個正整數。在每一個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。 你的目標

跳躍遊戲

https://nanti.jisuanke.com/t/18 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如:A=[2,3,1,1,4]A = [2,3,1,1,4

oj 跳躍遊戲 動態規劃 dfs

計蒜客oj 跳躍遊戲 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如: A = [2,3,1,1,4], return true. A = [3,2,1,0,4]

跳躍遊戲

題目描述 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如:A = [2,3,1,1,4]

跳躍遊戲二】

原文:https://www.cnblogs.com/Pinging/p/7719864.html import java.util.Arrays; import java.util.Scanner; public class Main { public static void mai

Java【跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如:A=[2,3,1,1,4]A = [2,3,1,1,4]A=[2,3,1,1,4] 能夠跳躍到最後一個下標,輸出true;

挑戰難題 第20題:跳躍遊戲

 時間限制 1000 ms  記憶體限制 10000 K 給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 你的目標是到達最後一個下標,並且使用最少的跳躍次數。 例如: A = [2,3,1,1,4], 到達最後一個下標的最少跳躍次

_跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。你的目標是到達最後一個下標,並且使用最少的跳躍次數。例如:A = [2,3,1,1,4]A=[

系列】挑戰難題18:跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。 陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到陣列的最後一個下標。 例如: A = [2,3,1,1,4], return true. A = [3,2,1,0,4], return

題目 跳躍遊戲

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後一個下標。例如:A = [2,3,1,1,4]A=[2,3,1,1,4] 能夠跳躍到最後一個下標,輸出true;A = [3,2,1,0