840シミュレートされたハッシュテーブルをAcWing

ジッパーの法則

#include <CStringの> 
する#include <iostreamの>
 使用して 名前空間STD;
 CONST  INT N = 100003 ;
 INT H [N]、E [N]、NE [N]、IDX;
 ボイド INSERT(INT X){
     int型 K =(X N + N%)%N; // ハッシュ関数
     // シミュレーション単鎖 
    E [IDX] = X; // 生存する 
    NEを[IDX] = H [K]; // 負に向かって1。 
    H [K] = ++ IDX; // 元のデジタルポイントIDX 
}
 BOOLの検索(INT X){
     int型 K =(X + N%N)%N;
     のためのINT私は、h [k]を=。I = - !1私は= NEは[i]は){
         場合(E [I] == x)を     返す 
    } 
    を返す 
} 
int型のmain(){
     int型のn; 
    cinを >> N; 
    memsetの(H、 - 1はsizeof H)。
    一方、(N-- ){
         チャー OP [ 2 ]。
        int型のx; 
        CIN >> OP >> X;
        もし(* OP == ' I ' )のインサート(x)は、
        {
             場合(見つける(X))COUT << " はい" << ENDL。
            他の裁判所未満<< " ノー" << てendl; 
        } 
    } 
    戻り 0 
}

 

 

全仏オープンへの対処

#include <CStringの> 
する#include <iostreamの>
 使用して 名前空間STD;
 CONST  INT N = 200003、中国ヌル = 0x3f3f3f3f ;
 INT H [N];
 int型検索(INT X){
     int型 T =(X + N%N)%N。// ハッシュ関数
    一方(H [T] =!ヌル && H [T] = X!){ // ない場合はXを介して挿入される 
        ++ T; // ダウン次いで見つける
        IF(T == N )T = 0 ; // ヘッド、スクラッチ見つける
    }
     戻り Tを、//直到找到为止
}
 int型のmain(){ 
    memsetの(H、0x3fをはsizeof H)。
    int型のn; 
    scanf関数(" %のD "、&N)
    一方、(N - ){
         チャー OP [ 2 ]。
        int型のx; 
        scanf関数(" %sの%D "、OP、およびX)
        もし(* OP == ' I ')H [検索(X)= X。
        {
             場合(H [検索(X)] == NULL)プット(ノー ;)// を通じて挿入されていない場合は
            、他の(プットはい); 
        } 
    } 
    を返す 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/QingyuYYYYY/p/11828724.html