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;
    }
  • 相关阅读:
    WCF 第八章 安全 确定替代身份(中)使用AzMan认证
    WCF 第八章 安全 总结
    WCF 第八章 安全 因特网上的安全服务(下) 其他认证模式
    WCF Membership Provider
    WCF 第八章 安全 确定替代身份(下)模仿用户
    WCF 第八章 安全 因特网上的安全服务(上)
    WCF 第九章 诊断
    HTTPS的七个误解(转载)
    WCF 第八章 安全 日志和审计
    基于比较的排序算法集
  • 原文地址:https://www.cnblogs.com/dragonfive/p/4334106.html
Copyright © 2011-2022 走看看