[ブルーブリッジカップ2018の決勝]ソートのおもちゃ

 

トピックリンクします。http://oj.ecustacm.cn/problem.php ID = 1401?

具体的にコードの注意を見て:

書式#include <iostreamの> 
の#include <CStringの>  
の#include <ベクトル> 
の#include <キュー> 
の#include <アルゴリズム> 使用して名前空間をSTD。文字列行列[ 15 ]。
ベクター < チャー > CHS。
INT T、N、M、フラグ。ボイドInitData(){
     ためINT iは= 0 ; I < 15 ; I ++ ){ 
        行列[I] .clear(); 
    } 
    chs.clear()。
} int型のmain(){ ながら(〜のscanf("


 






    
    %のD "& T)){
         一方(T-- ){ 
            
            scanf関数(" %D%D "、&​​N、&M); 
            フラグ = ;
             のためにINT iが= 0 ; I <N; I ++ ){ 
                CIN >> 行列[I]; 
            } 
            
            // 拿取包含的有哪些字符 
            ベクトル< チャー > ::イテレータそれは、
             のためにINT iは= 0 ; I <Nを; I ++ ){
                 ためINT J = 0 ; J <行列[I] .size(); J ++ ){ 
                    IT = 探す(chs.begin()、chs.end()、行列[I] [J]);
                     IF(CHS == ITを.END()&&フラグに){ // 前の文字まで添加し、真でない(最初の文字からなる矩形の左上隅) 
                        chs.push_back(行列[I] [J]); // 最初の取得文字
                        
                        // 決意を起動し、右の拡張アプリケーション開始
                         // メイン判定する文字矩形構成のすべての文字かどうか
                        int型のW、H; 
                        W = H = 1 ;
                         INT I1 = I、J1 = J;
                         // へW幅を決定右拡張アプリケーション、
                        しばらく(++ J1 <&&行列M [I] [J1] ==行列[I] [J]){W ++ ;} 
                         // 下方延長アプリケーション、H高さを決定する
                        一方で(I1 ++ <N &&行列[I1] [J] ==行列[I] [J]){H ++ ;} 
                        
                        // 高さを取得し、矩形内の他の文字があるかどうか検索を開始する
                        ためには、(I = I1、I1 <I + H、I1 ++ ){
                             ( J = J1、J1 <J + W; J1 ++ ){
                                 IF(行列[I] [J] =!行列[I1] [J1]){ 
                                    でフラグ = falseにBREAK ; 
                                } 
                            } 
                            IF(内のフラグ!)BREAK ; 
                        } 
                        
                        IF(!内のフラグ)BREAK ; 
                        
                        // この文字の外側の検索矩形の存在がある場合
                        のためにINT I2 = 0 ; I2 <N; I2 ++ ){
                             ためINT J2 = 0 ; J2 <行列[I2は] .size(); J2 ++ ){
                                 IF){((I2> = I && I2 <I + H && J2> && J2 = J <J + W!)// 負矩形
                                    IF(行列[I] [J ] == 行列[I2] [J2]){ 
                                        でフラグ = falseに;
                                        休憩; 
                                    } 
                                } 
                            } 
                            もし(!フラグ)ブレーク
                        } 
                    } 
                    もし(!フラグ)ブレーク
                } 
            } 
            
            もし(フラグ){ 
                COUT << " YES " << ENDL。
            } { 
                COUT << " NO " << ENDL。
            } 
            
            InitData()。
        } 
    } 
    戻り 0 
}

 

..............

おすすめ

転載: www.cnblogs.com/hello-dummy/p/12590255.html