電車車両番号1-Nのセット
局を介して右から左へ
各車が一時的にメインライン上でいくつかの車を聞かせて、その後、戻って道路に追いつくために、(スタック)を停止することができます。
シーケンス番号とキャリッジは、可能であるか否かを判断する、コンパートメントが欲しかっ入力します。
CCF材料ボリュームP149、実施例6.9
コードは以下の通りであります:
1の#include <iostreamの> 2の#include < ストリング > 3の#include <cmath> 4の#include <アルゴリズム> 5 使って 名前空間STDを、 6 構造体スタック 7 { 8 INT [ 100 ]。 9 int型のp; 10 }。 11 ブールのisEmpty(スタック* S) 12 { 13 リターン S-> P == - 1 。 14 } 15 空隙プッシュ(スタック* S、int型X) 16 { 17 S-> P ++ 。 18 S-> [S-> P] =のX。 19 } 20 int型のポップ(スタック* S) 21 { 22 であれば(!のisEmpty(S)) 23 { 24 リターン S-> [S-> P-- ]。 25 } 26 他の 27 { 28 // COUT << "スタックが空です"。 29 リターン - 1 。 30 } 31 } 32 のint gettop(スタック* S) 33 { 34 であれば(!のisEmpty(S)) 35 { 36 リターン S-> [S-> P]。 37 } 38 他の 39 { 40 // COUT << "スタックが空です"。 41 リターン - 1 。 42 } 43 } 44 main()の 45 { 46 スタック* mystack = 新しいスタック。 47 INT [ 100 ] = { 0 }、B [ 100 ] = { 0 }、N、* P1、P2 *。//Aは、目的の配列であり、Bは、右から左へステーションを介して初期シーケンス、B列である 48 BOOLをフラグ=でtrueに、 49 mystack-> P = - 1。; 50 P1 = A; 51である P2 = B; 52である // 初期化が開始 53である CIN >> N-; 54である ため(INT I = 0、I <N - 、Iは++ ) 55 { 56である [I] =私は+ B 1 ; 57である } 58 のために(INT I = 0、I <N - 、I ++は) 59 { 60 >> CIN A [I]; 61である } 62は、 // 初期化端 63であり 、一方(* P1!= 0 ) 64 { 65 IF(P2 * == 0 && getTop(myStack)* =!P1) 66 { 67 フラグに= falseに。 68 BREAK ; 69 } 70 他 71である { 72 IF(== *のP1 *のP2) 73は 、{ 74 P1 ++ ; 75 P2 ++; 76 } 77 そう であれば(* P1 == gettop(mystack)) 78 { 79 POP(mystack)。 80の P1 ++ ; 81 } 82 他の 83 { 84 プッシュ(mystack、* P2)。 85枚の P2 ++ ; 86 } 87 } 88 } 89 であれば(フラグ) 90 { 91 COUTは<< 「私はそれを行うことができます。" ; 92 } 93 他の 94 { 95 COUT << " は不可能です。" ; 96 } 97 フリー(mystack); 98 }
ここで終わり