純粋なシミュレーションの質問。
1つの文字列に2つのチームが、記録方向アリ列、0はチームが正しいものである、チームを去っています。それぞれの時点では、2つの文字は、二つの文字列の上にスイープします。だけ右に行くため(文字列や配列を交換しながら方向)0,1は、限り2つの文字で電流が、最初のものは0であり、第1、スイッチングを行うために、左に行くことができます2スキャンポインタがインクリメントされます。それ以外の場合は、ポインタ。
チームは、合併の順序を反転させる必要があるときに1がチームを去ったことに注意してください。
フィールは、理解することが際立っていました 下のコードを貼り付けます。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INT N1、N2、T、[ 100005 ]、LEN。 文字列S1、S2、S3; INT メイン() { CIN >> N1 >> N2 >> S1 >> S2 >> T。 以下のために(int型 i = 0 ; I <s1.size()/ 2([)(s1.size - S1 [i]は、S1スワップI ++を;)1 - I])。 S3 = S1 + S2。LEN = s3.size()。 用(INT I = s1.size(); iがLEN <; iは++)[I] = 1 。 以下のための(int型私は=0 ; 私はトンを<; I ++ ) { int型 J = 0 。 一方、(J < LEN) { 場合(![J] && [J + 1 ]) { スワップ([J]、[J + 1 ])。 スワップ(S3 [J]、S3 [J + 1 ])。 J + = 2 ; } 他の J ++ ; } } COUT << S3 << ENDL。 リターン 0 ; }