アルゴリズム:二次元配列を見つけるために

タイトル説明

(同一の各一次元アレイの長さ)は、上から下に増加する順に、二次元アレイの各列を並べ替えるために、昇順ソートの順に左から右に、各行。完全な機能、例えば、二次元アレイと整数を入力し、配列の整数が含まれているか否かが判断されます。
C ++ 11に実現

 

#include <iostreamの> 
する#include <ベクトル> 
の#include <アルゴリズム> 
の#include <ストリング> 

名前空間STDを使用して、

ブール(ベクター<ベクトル<整数>>配列、int型のターゲット)を探す
{ 
    INTをrowCount = array.size()。
    INT COLCOUNT =配列[0] .size()。
    int型I、J。
    (; I> = 0 && jの<COLCOUNT; I =をrowCount-1、J = 0)のための
    { 
        IF(ターゲット==配列[I] [J])
            trueを返します。
        (目標<配列[I] [J])であれば
        { 
            i--。
            持続する; 
        } 
        IF(ターゲット>配列[I] [J])
        { 
            J ++。
            持続する; 
        }
    falseを返します。
} 
int型のmain()
{ 
    int型のk = 0。
    文字列SVAL。
    ベクトル<整数> SVEC。
    ベクトル<ベクトル<int型>> PVEC。
    (++ J; J <5 INT J = 0)のための
    { 
        (I = K int型、iが10 + kは<; ++ i)がため
            sVec.push_back(I)。
        K ++; 
        COUT << "子ベクター" << sVec.size()<< ENDL。
        以下のための(ベクトル<整数> ::イテレータitor = sVec.begin(); itor = sVec.end();!itor ++)
            はcout << * itor <<てendl; 
        pVec.push_back(SVEC)。
        sVec.clear(); 
    } 
    COUT << "親ベクター" << pVec.size()<< ENDL。
        裁判所未満<<「を入力してくださいチェック整数」<<てendl; 
        cinを>> SVAL。
        (もし!検索(PVEC、STOI(SVAL)))
            はcout << "整数データを見つけることができません" <<てendl; 
        他の
            裁判所未満<<「整数データを検索し、」<<てendl; 
    } 
    (1)一方、
    0を返します。
} 


思路

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

最初の数4は、I =取得開始をrowCountを-1の最後の行から始まる、J = 0、N Mと目標値との比較を想定しています。

1. M <N、天然に行数を増やすことなく、右の列へのクエリの数を増加させます

2. M> N、行アップクエリの自然数

3. M == nは、発見された、終了

対象は、技術的な内容カザフスタンに欠けています

  

おすすめ

転載: www.cnblogs.com/yiyi20120822/p/11327531.html