zoukankan      html  css  js  c++  java
  • 数据结构练习(27)寻找丑数

    http://zhedahht.blog.163.com/blog/static/2541117420094245366965/

    思路:

    构造很精美,数学知识还是需要不断积累啊。

    本来打算用vector容器存放数字,用迭代器获取元素的时候会产生异常。然后意识到vector容器是动态增长大小的,每一次重新开辟空间都会使以前的迭代器失效。

    使用C++的时候细节问题一定要各种注意啊。

    #include <iostream>
    
    int GetMinOf3(int n1, int n2, int n3)
    {
        int ans;
        if (n1 > n2)
            ans = n2;
        else
            ans = n1;
    
        if (ans > n3)
            ans = n3;
    
        return ans;
    }
    
    int GetUglyNumber(int idx)
    {
        int *ugly = new int[idx+1];
        
        int *iter2 = ugly;
        int *iter3 = ugly;
        int *iter5 = ugly;
    
        int cnt = 1;
        ugly[0] = 1;
        while (cnt < idx)
        {
            int min = GetMinOf3((*iter2)*2, (*iter3)*3, (*iter5)*5);
            ugly[cnt] = min;
    
            while ((*iter2)*2 <= min)
                ++iter2;
            while ((*iter3)*3 <= min)
                ++iter3;
            while ((*iter5)*5 <= min)
                ++iter5;
    
            ++cnt;
        }
        return ugly[idx-1];
    }
    
    int main()
    {
        int n = GetUglyNumber(1500);
        return 0;
    }
    -------------------------------------------------------

    kedebug

    Department of Computer Science and Engineering,

    Shanghai Jiao Tong University

    E-mail: kedebug0@gmail.com

    GitHub: http://github.com/kedebug

    -------------------------------------------------------

  • 相关阅读:
    python--异常处理
    Codeforces 1499D
    Codeforces 1263E
    Codeforces 1493D
    Codeforces 1492D
    Codeforces 1490G
    Codeforces 1487E
    Codeforces 1485D
    Codeforces 1485C
    P6917 [ICPC2016 WF]Balanced Diet
  • 原文地址:https://www.cnblogs.com/kedebug/p/2821809.html
Copyright © 2011-2022 走看看