浙江省の学校の運動は、2つのデータ構造に7-3ポップシーケンスを行使する(25分)

保つことができるスタックを考えると  、ほとんどのM番号を。プッシュ  1、2、3、...、の順にN個の番号を  Nとランダムポップ。あなたは数字の与えられたシーケンスは、スタックの可能なポップ・シーケンスである場合伝えることになっています。たとえば場合、  Mは5であり、  Nは7であり、我々は、スタックから1、2、3、4、5、6、7を得ることができるではなく、3、2、1、7、5、6、4。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、3つの数字(全く1000以上)を含む  M(スタックの最大容量)、  N(プッシュ配列の長さ)、および  Kを(ポップ配列の数がチェックされます)。次いで、  Kラインは、それぞれのポップシーケンス含まれ、追従  N番号。行のすべての数字は、スペースで区切られます。

出力仕様:

各ポップ・シーケンスの場合、それは確かに、スタックの可能なポップ・シーケンスである場合は、1つの行「YES」で印刷、または「NO」の場合ではありません。

サンプル入力:

5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2

サンプル出力:

YES
NO
NO
YES
NO



書式#include <iostreamの> 
の#include <スタック>
 使用して 名前空間はstdを、
INT メイン(){
     // 最大容量、一行最大数、N行
    INT MAXCAPACITY、MAXNUM、ライン、
    CIN >> MAXCAPACITY >> MAXNUM >> ライン。
    一方、(line-- ){ 
        スタック < INT > STA。
        int型のval [MAXNUM]。int型の A = 0 ;
        以下のためにint型 i = 0 ; iは<MAXNUM; iは++ ){ 
            CIN >> ヴァル[I]。
        } 
        BOOL = NO;
        以下のためにint型 i = 0 ; iは<MAXNUM iは++ ){ 
            sta.push(iは + 1 )。
            もし(sta.size()> MAXCAPACITY){ 
                なし = 破ります; 
            } 
            ながら(!sta.empty()&&ヴァル[A] == sta.top()){ 
                sta.pop()。++ ; 
            } 
        } 
        であれば(NO)COUT << " NO " << ENDL。
        それ以外の 場合(sta.empty())COUT << " YES " << ENDL。
        他の裁判所未満<< " NO " << てendl; 
    } 
    システム(一時停止)。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/littlepage/p/11375366.html