zoukankan      html  css  js  c++  java
  • 二维数组作为参数传递

    二维数组题的思维收获

    这个算法跟数据结构没关系,主要是逻辑思维看图思考利用的是数据之间的关系;多多举例具体化尝试,把复杂的问题具体化,分析那种情况,时间复杂度低。先有思路,再写代码。代码贴近自己的思维。

    二维数组处理的代码收获

    在c++中将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维。但是我们在写程序的时候经常会遇到各个维数都不固定的情况,我们完全可以不把它当作一个二维数组,而是把它当作一个普通的指针,在另外加上两个参数指明各个维数,然后我们为二维数组手工寻址,这样就达到了将二维数组作为参数传递的目的

    #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;
    }
  • 相关阅读:
    Android Activity 四种启动模式
    Android Activity的生命周期
    Android SQLite (五 ) 全面详解(三)
    Android SQLite (四 ) 全面详解(二)
    工作流设计 zt
    法律网站分类 ­zt
    刑事案件的构成要素 zt
    犯罪构成三层次记忆口诀 zt
    E asy Boo t 6.51 启动易 制作启动光盘的软件(附注册码)
    父线程开启子进程且共享内存
  • 原文地址:https://www.cnblogs.com/dragonfive/p/4334106.html
Copyright © 2011-2022 走看看