zoukankan      html  css  js  c++  java
  • 剑指offer 面试题34 丑数

      题目链接: 剑指offer

      题目描述: 规定素数分解只有 2, 3, 5的数字为丑数, 输入N , 求第N个丑数

      解题思路: 一个丑数肯定是由上一个丑数得来的, 我们只需要求出根据已经存在的所有丑数, 求第N个丑数

      代码: 

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iterator>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <deque>
    #include <map>
    #include <set>
    #include <queue>
    #define lson l, m, rt<<1
    #define rson m+1, r, rt<<1|1
    #define mem0(a) memset(a,0,sizeof(a))
    #define mem1(a) memset(a,-1,sizeof(a))
    #define sca(x) scanf("%d",&x)
    #define de printf("=======
    ")
    typedef long long ll;
    using namespace std;
    
    int Get_Ugly_Number_Solution2(int index) {
        if( index < 0 ) return 0;
        int *pUglyNumbers = new int[index];
        pUglyNumbers[0] = 1;
        int nextUglyIndex = 1;
        int * pMultiply2 = pUglyNumbers;
        int * pMultiply3 = pUglyNumbers;
        int * pMultiply5 = pUglyNumbers;
        while( nextUglyIndex < index ) {
            int Min = min({*pMultiply2*2, *pMultiply3*3, *pMultiply5*5});
            pUglyNumbers[nextUglyIndex] = Min;
            while( *pMultiply2*2 <= Min ) ++pMultiply2;
            while( *pMultiply3*3 <= Min ) ++pMultiply3;
            while( *pMultiply5*5 <= Min ) ++pMultiply5;
            ++nextUglyIndex;
        }
        int ugly = pUglyNumbers[index-1];
        delete [] pUglyNumbers;
        return ugly;
    }
    
    int main() {
        int index;
        scanf( "%d", &index );
        printf( "%d
    ", Get_Ugly_Number_Solution2(index));
        return 0;
    //
    //    stack<int> temp_stack;
    //    for( int i = 0; i < 12; i++ ) {
    //        temp_stack.push(i);
    //    }
    //    while( !temp_stack.empty() ) {
    //        cout << temp_stack.top() << endl;
    //        temp_stack.pop();
    //    }
    }
    View Code

      思考: 这个没啥吧......需要记得看看是不是能够由上一个状态进行转移, 还有一个就是这个数本身的特点, 比如二进制或者能不能划分成子问题等等

  • 相关阅读:
    tensorflow版的bvlc模型
    caffe中关于数据进行预处理的方式
    使用caffe时遇到的问题
    关于梯度下降算法的的一些总结
    机器学习优化算法之爬山算法小结
    机器学习之最小二乘法
    机器学习之KNN算法思想及其实现
    安装Python时遇到如下问题,解决方案
    机器学习之决策树熵&信息增量求解算法实现
    朴素贝叶斯分类器(离散型)算法实现(一)
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7517981.html
Copyright © 2011-2022 走看看