zoukankan      html  css  js  c++  java
  • 第一课——进阶高手的大门

    时至今日,程序已经不仅仅是数据结构和算法了,我们需要使用面向对象的思维方式来解决很多现实生活地问题, 这样的问题可以不使用算法也不使用数据结构。但是,我们依旧需要学习这门课程,因为在我的专业中,这属于必修课程,一个不会算法的程序员,注定是可以轻易被替代的,况且,作为研究生,还有更高层次的数字信号处理方面的算法在等着我。

    看一个例子,展示程序设计者的功底:

    #include <iostream>
    
    using namespace std;
    
    long sum1(int n)
    {
        long ret = 0;
        int* array = new int[n];
    
        for(int i=0; i<n; i++)
        {
            array[i] = i + 1;
        }
    
        for(int i=0; i<n; i++)
        {
            ret += array[i];
        }
    
        delete[] array;
    
        return ret;
    }
    
    long sum2(int n)
    {
        long ret = 0;
    
        for(int i=1; i<=n; i++)
        {
            ret += i;
        }
    
        return ret;
    }
    
    long sum3(int n)
    {
        long ret = 0;
    
        if( n > 0 )
        {
            ret = (1 + n) * n / 2;
        }
    
        return ret;
    }
    
    int main()
    {
        cout << "sum1(100) = " << sum1(100) << endl;
        cout << "sum2(100) = " << sum2(100) << endl;
        cout << "sum3(100) = " << sum3(100) << endl;
    
        return 0;
    }

    我们明显可以知道,第三种采用高斯公式解决问题的程序员是功底最好的(上面的程序是一个好的引子,但是对于数组命名成array是个不好的地方,c++11中,array是std中自带的容器,命名成其他的更好)。这也体现了,数据结构真的是为了之后算法做铺垫的基础课程,算法有很多,但是离不开的是数学本源,数学知识的基础,决定了你能做到哪一个层次。

    不过很可惜,别说算法了,大多数人连基础语言的基本语法都不能随心所欲地驾驭,所以,还得花上大部分时间补习基础语法,这是一个慢慢累积的过程。

     

  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/7144460.html
Copyright © 2011-2022 走看看