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