住所 https://algospot.com/judge/problem/read/JUMPGAME
我々は右または現在のデジタルモバイルのx + NUM || Y + NUMを選択することができますたびに
しかし、それはあまりにも非効率的TLEを横断します
我々は(現在はすでにトラバーストラバース格子結果が達することができるか、到達することはできません)現在のグリッドがどのレコードへの直接の結果ならば、既にトラバーストラバースされているかどうかを記録を構築する必要があります
コードは以下の通りです
1の#include <iostreamの> 2の#include <ベクトル> 3 4 使用して 名前空間STDを、 5 6 / * 7 2 8 7 9 2 5 1 6 1 4 1 10 6 1 1 2 2 9 3 11 7 2 3 2 1 3 1 12 1 1 3 1 7 1 2 13 4 1 2 3 4 1 2 14 3 3 1 2 3 4 1 15 1 5 2 9 4 7 0 16 7 17 2 5 1 6 1 4 1 18 6 1 1 2 2 9 3 19 7 2 3 2 1 3 1 20 1 1 3 1 7 1 2 21 4 1 2 3 4 1 3 22 3 3 1 1 2 3 4 23 1 5 2 9 4 7 0 24 * / 25ベクター<ベクトル< INT >> V(150、ベクトル< INT >(150 ))。 26ベクトル<ベクトル< INT >> VIS(150、ベクトル< INT >(150 ))。 27 int型のn; int型メートル; 28 29 INTジャンプ(int型のx、int型のY) 30 { 31 場合(X> = M || X < 0 || Y < 0 || Y> = M)リターン- 1 ; 32 であれば(VIS [X] [Y] == 1 ) 33 リターン 0 。 34 VIS [X] [Y] = 1 。 35 であれば(X == M - 1 && Y == M - 1 ) 36 リターン 1 。 37 INT jumpcount = V [X] [Y]。 38 INT RET1 =ジャンプ(X + jumpcount、Y); 39 INT RET2 =ジャンプ(X、Y +のjumpcount)。 40 41 であれば(RET1 == 1 || RET2 == 1 ) 42 リターン 1 。 43 リターン - 1 。 44 } 45 46 47 ボイド)(解決 48 { 49 INT X = 0、Y = 0 。 50 51 INT RET =ジャンプ(0、0 ); 52 であれば(RET == 1 ){ 53 COUT << " YES " << ENDL。 54 } 55 他{ 56 COUT <<" NO " << てendl; 57 } 58 } 59 60 のint main()の 61 { 62 CIN >> N。 63 一方(N-- ){ 64 のために(INT iが= 0 ; I < 150 ; I ++ ) 65 のための(INT J = 0 ; J < 150 ; J ++ ) 66 V [I] [J] = 0 ; 67 のための(int型 I =0 ; I < 150 ; I ++ ) 68 のための(int型 J = 0 ; J < 150 ; J ++ ) 69 VIS [I] [J] = 0 ; 70 71 72 CIN >> M。 73 のために(INT iが= 0 ; I <M、I ++ ){ 74 のために(INT J = 0 ; J <Mであり、j ++ ){ 75 CIN >> V [i]は[J]。 76 } 77 } 78 79 )(解きます。 80 } 81 82 83 戻り 0 ; 84 }