美文网首页前端思考
美团点评前端在线笔试题总结

美团点评前端在线笔试题总结

作者: Frio_ | 来源:发表于2019-10-17 09:33 被阅读0次

    由于太久没有复习算法知识,导致基本没写出来,但是都是以前学过的知识,编程题主要有两道:

    1.求矩阵最小路径

    给定一个矩阵m
    从左上角开始
    每次只能往下或者往右走
    最后到达右下角的位置
    路径上所有数字之和就是路径和
    求最小路径和
    用c++写的:

    #include <iostream>
    using namespace std;
    
    int main() {
        int m;
        scanf("%d",&m);//输入矩阵大小
        int i,j,input[m][m],output[m][m];
        for (i = 0 ; i<m; i++) {//输入矩阵值
            for (j = 0; j<m; j++) {
                cin>>input[i][j];
                output[i][j] = input[i][j];
            }
        }
        for (i=1; i<m; i++) {
            output[0][i] += output[0][i-1];//处理第一行
            output[i][0] += output[i-1][0];//处理第一列
            for (j=1; j<m; j++) {
                output[i][j] += output[i][j-1]<output[i-1][j]?output[i][j-1]:output[i-1][j];//比较上方元素和左方元素值大小,取小
            }
        }
        cout<<output[m-1][m-1]<<endl;//输出答案
        return 0;
    }
    

    2.求最少优惠券使用数量

    自行输入用例:
    商品价格,若干种面值的优惠券(第一个数是种类数量)
    65
    4 30 20 10 5
    输出使用优惠券最少的最优方案
    (需要先排序)从大到小,这里省略

    function dikou(total, youhui) {
        function _dikou(t, q, tmp) {
            // console.log(tmp, q, q.length - 1)
            if (t < q[q.length - 1] || tmp.length >= 5) return tmp
    
            if (t - q[0] >= 0) {
                tmp.push(q[0])
                return _dikou(t - q[0], q, tmp)
            } else {
                return _dikou(t, q.slice(1), tmp)
            }
        }
    
        let result = []
        return _dikou(total, youhui, result)
    }
    
    console.log(dikou(65, [30, 20, 10, 5]))
    

    相关文章

      网友评论

        本文标题:美团点评前端在线笔试题总结

        本文链接:https://www.haomeiwen.com/subject/mqqmmctx.html