見つけるために二次元配列(A)

 - * -コーディング:UTF-8 - * - 
''」
タイトル
    2次元アレイ状に(各一次元配列の長さと同じ)、各列の並べ替え増加する順に左から右へ、
    各列は、上から下に昇順にソート。このような2次元配列と整数を入力して、機能を完了してください
    これは、アレイが整数が含まれているか否かを判定する。
思考
    まず、数字の配列の左上隅を選択します。この数は、あなたが、プロセスの終わりのための外観を見つけたい数に等しい場合。
    数がこの数は、列、列を探し除くより大きい場合、番号がある場合は以下の配列よりも見つけるために、
    この数直線を除く位置しています。それはあなたが探している数は、アレイの右上隅にない場合と言うことです、
    ルック・アレイ内の各時間または除外行、各ステップを見つけるために範囲を狭めることができるように、
    あなたが探している番号を見つける、または範囲が空である見つけるまで。
「」」

「」」
著者:
    八尾Zhian
ブログ:
    https://cuijiahua.com/blog/2017/11/basis_1.html
変更します。
    2020年1月18日
「」」


デフloadSimpData():
     ""」
    配列要素の初期ライセンスを作成します。
    パラメーター:
        ノー
    戻り値:
        アレイ - 最初の2次元データ
    ""」
    アレイ = [
        [ 1、2、8、9 ]
        [ 2、4、9、12 ]、
        [ 4、7、10、13 ]、
        [ 6、8、11、15 ]
    ]

    リターン・アレー

クラスソリューション:
     #1 アレイ2次元リスト
    DEF 検索(セルフ、ターゲットは、Array):
        M = LEN(アレイ)
        N = LEN(配列[0])
        POS_X。= M - 1つの左下位置に初期位置 
        POS_Y = 0
         一方(POS_X> = 0)&(POS_Y <N-): 境界を越えては出てくる
            IF配列[POS_X] [POS_Y] ==ターゲット:もし現在の位置デジタル数が等しい見つけるために、検索処理が終了して戻る真
                リターンELIFの配列[POS_X] [POS_Y <目標:番号がAアウトデジタルフィルタを見つけるために、以下の現在位置を超える場合
                POS_Y = POS_Y + 1
            番号はあなたがラインアウト、デジタルフィルタを見つけたい、現在の位置よりも大きい場合
                POS_X = POS_X  -  1
        返す#のここでの書き込みコードを


もし __name__ == ' __main__ ' 
    アレイ = loadSimpData()
    プリント(num_color) 
    S = 溶液()
     プリント(S.Find(7、配列))

おすすめ

転載: www.cnblogs.com/shnuxiaoan/p/12210097.html