パラメータとして2 D配列を渡す

6001 ワード

l二次元配列問題の思考収穫
このアルゴリズムはデータ構造とは関係なく、主に論理思考が図を見て思考して利用するのはデータ間の関係である.多く例を挙げて具体化して試みて、複雑な問題を具体化して、その情況を分析して、時間の複雑度は低いです.まず考えがあってから、コードを書きます.コードは自分の思考に近い.
l二次元配列処理のコード収穫
c++で2次元配列をパラメータとする場合は、すべての次元のサイズを指定するか、1次元を省略する必要があります.しかし、プログラムを書くとき、各次元が固定されていない場合によく遭遇します.私たちはそれを2次元配列としてではなく、普通のポインタとして使用することができます.また、2つのパラメータを加えて各次元数を指定し、2次元配列を手動でアドレスすることで、2次元配列をパラメータとして渡す目的を達成します.
#include <iostream>

using namespace std;

//int * matrix   int matrix[][]          ; 

//               ; 

//                    ,        ;

 



int Find(int * matrix,int rows,int columns,int number)

{

    int row = 0, column = columns - 1;

    while(column>=0 && row<rows)

    {

        if(*(matrix+row*columns+column) == number )

        {

            cout<<*(matrix+row*columns+column)<<"  " <<endl;

            return 1;

        }

        if(*(matrix+row*columns+column) < number ) //   return        if else     

        {

            cout<<*(matrix+row*columns+column)<<"  " <<endl;

            row++; 

        }else

        {

            cout<<*(matrix+row*columns+column)<<"  " <<endl;

            column--; 

        }    

        

    }

    return 0;

    

}

int main()

{

    int  data[4][4]=

    {

        1, 2,  8,  9,

        2, 4,  9, 12,

        4, 7, 10, 13,

        6, 8, 11, 15

    };

    int num[4][5]

    {

        1, 2, 8, 9, 10,

        2, 4, 9, 12, 13,

        4, 7, 10, 13, 14,

        6, 8, 11, 15, 16

    };

    cout<<Find(&(data[0][0]),4,4,0)<<endl;

    cout<<Find(&(num[0][0]),4,5,17)<<endl;

}