トピック分析:
我々はそれがある限り、私のためにRと統計のコマンド文字列のU(数として、実際には終点座標(8,8)、コマンド文字列の数であると仮定すると、この問題の主なコアについて、このような「RURUU」のためであります与えられた例えば、num_R == 2、num_Uの== 3 )、 明らかにかかわらず、我々は最後に達することができるかどうかの、この命令は、それがの終わりに到達する前に一度、その後、私達はちょうど行くよりも多くを行くために、少なくとも可能ですX減算ホイール(Iは、x ==分(8/2、の点で与えられ、例えば 8/3)== 2、 中間車の数は無視移動し、終点の位置をに変換することができる(4,2 ))、ある状況の最後のラウンドで見つけることができる数よりも少ないフィニッシュラインに到達し、コマンド文字列を横断するように、R番号Uを必要とし、ステップシミュレーションによるステップは、xまたはyの端回以上は決してでき彼らは、この判定処理をより便利に、単一の関数として記述することができますしようとする目標点に達することができるように、それは、あまりにも、バリアポイントに達することがあります。問題が解決した場合、我々は最初のポイントへの障壁を決定する(X <=エンドポイントxが、Y <=エンドyを、そうでない場合は質問の意味は、障害は有効なポイントではありません)ポイントに到着することができ、すべての障害が戻ってこないだろうかを決定する必要がありますそして、最後に分析することに達することができます
この問題はコード:
1 クラスソリューション{ 2 公共: 3 INT分(INT X、INT Y){ 4 リターン X <Y?X:Y; 5 } 。6 BOOLジャッジ(文字列コマンド、INT x_num、INT y_num、INT X、INT Y){ 7 INT TEMP =分(X / x_num、Y / y_num); // TEMP共通多重記録 8。 X = X - * TEMPのx_num; // XはR&LTに記録されている 9。 Y = Y - y_num * TEMP。 // YレコードはU-で 10 // xとyの場合は、最初のサイクルの終わりの相対位置を表す 11。 IF(Xの== 0 &&のy == 0)リターン trueに、 12は 他{ 13は INT len_cmd = コマンド.size(); 14 用(INT I = 0 ; I <len_cmd; I ++は){ 15 IF(コマンド[I] == ' U- ' ){ 16 -Y - 、 17 IF(Y < 0)リターン falseに、 18 } 他{ 19 x-- 。 20 であれば(X < 0)を返す 偽。 21 } 22 場合(Xの== 0 && Y == 0)を返す 真。 23 } 24 } 25 リターン 真。 26 } 27 ブールロボット(文字列コマンド、ベクトル<ベクトル< INT >>&障害、int型のx、INT Y){ 28 INT len_cmd = command.size(); 29 INT X_1 = 0 ; 30 INT Y_1 = 0 ; 31である // 統計最初のサイクルの場所に来ることができる 32 のために(INT I = 0 I <len_cmd。 ; I ++は){ 33が IF(コマンド[I] == ' R&LT ' ){ 34は X_1 ++ ; 35 } 他{ 36 Y_1 ++ ; 37 } 38であります } 39 // 置くシークの端部であるとしてすべての障害点が(疾患の点はxとyのxとyの端部よりも小さくなるように)偽のリターンに到達に到達することができる 40 INT len_obs = obstacles.size(); 41である ため(int型 I = 0 ; Iはlen_obsを<; Iは++ ){ 42はある IF(障害物[I] [ 0 ] <= X &&障害物[I]が[ 1 ] <= Y){ 43である // falseにリターンに達する 44で IF(裁判官(コマンド、X_1、Y_1、障害物[I] [ 0 ]、障害物[I] [ 1。 ])== trueに)復帰 はfalse ; 45 } 46れます } 47 // エンドポイントにすべての点で障害物が直接エンドポイントに達しない場合には到達するかどうかを決定する 48 のIF(判事(コマンド、X_1、Y_1、X、Y)は== trueに)復帰 trueにし、 49 他 返し falseに; 50 } 51 }。