阿里3.25笔试题

2017阿里内推笔试题--算法工程师(运筹优化) 2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3 阅读详情

自己写的bullshit,第一题5%,第二题0%

第一题原来写的代码:

思路是首先对矩阵所有数求和,然后取平均值,接下来,找到每一列最接近平均值的数,使得起伏最小。

只通过了5%。

#include <iostream>
#include <cstdio>
#include<vector>
#include<algorithm>
using namespace std;

const int max_num = 1e5 + 10;
int matrix[3][max_num];

int main1(){
    int n;
    cin >> n;
    int ans = 0;
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < n; j++) {
            int tmp;
            scanf_s("%d", &tmp);
            matrix[i][j] = tmp;
            sum += abs(tmp);
        }
    }
    if (n == 1) {
        cout << min(min(matrix[0][0], matrix[1][0]), matrix[2][0]);
        return 0;
    }
    int aver = sum / (n * 3);
    vector<int> rst(n, 0);
    for (int j = 0; j < n; j++) {
        int tmp;
        int sub;
        for (int i = 0; i < 3; i++) {
            tmp = matrix[i][j];
            if (i == 0) {
                sub = abs(tmp - aver);
            }
            else {
                sub = min(sub, abs(tmp - aver));
            }

        }
        rst[j] = sub;
        if (j > 0) {
            ans += abs(rst[j] - rst[j - 1]);
        }
    }
    cout << ans << endl;
    return 0;
}

应该可以AC的代码:

考察每一个数的位置,他可以到达现在的位置,之前有三种选择,可以分别从前一列的三个位置转移过来, 选择和最小的一个位置进行转移。

dp[i][j]表示选择了矩阵i,j位置的元素,得到的最小路径绝对值之和。

推导dp的思路就是分别与前面三个元素做差,然后比较三个和,选择最小值。

dp[i][j] = min(abs(matrix[i][j] - matrix[k][j-1])+dp[k][j-1]), k=1,2,3 

 

#include <iostream>
#include <cstdio>
#include<vector>
#include<algorithm>
using namespace std;

const int max_num = 1e5 + 10;
int matrix[3][max_num];
int dp[3][max_num] = {0};
int main() {
    /*
    5
5 9 5 4 4
4 7 4 10 3
2 10 9 2 3
    */
    int n;
    cin >> n;
    int ans = 0;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < n; j++) {
            int tmp;
            scanf_s("%d", &tmp);
            matrix[i][j] = tmp;
        }
    }
    //dp[0][0] = 0;
    //dp[1][0] = 0;
    //dp[2][0] = 0;
    for (int j = 1; j < n; j++) {
        for (int i = 0; i < 3; i++) {
            dp[i][j] = min(min(abs(matrix[i][j] - matrix[0][j - 1]) + dp[0][j-1], abs(matrix[i][j] - matrix[1][j - 1]) + dp[1][j - 1]), abs(matrix[i][j] - matrix[2][j - 1]) + dp[2][j - 1]);
        }
    }
    ans = min(min(dp[0][n-1], dp[1][n-1]), dp[2][n - 1]);
   
    cout << ans << endl;
    return 0;
}

 

第二题代码:

思路是

  1. 行遍历的时候判断,如果有两个数的值大于1,那么这行一定可以全部推导出来。重新对这行进行处理,求出公差,还原所有数。
  2. 然后进行列遍历,情况一样。

这种判断,求公差,还原的思路太复杂了,期待看到别人的思路。

写了大概半个小时,没有AC。

#include <iostream>
#include <cstdio>
#include<vector>
#include<algorithm>
using namespace std;

int matrix[510][510];
int main() {
    //freopen("1.in","r",stdin);
    int n, m, q;
    cin >> n >> m >> q;
    int ans = 0;
    int sum = 0;
    int row_true[510] = { 0 };
    int column_true[510] = { 0 };
    for (int i = 0; i < n; i++) {
        int cnt_j = 0;
        for (int j = 0; j < m; j++) {
            int tmp;
            scanf_s("%d", &tmp);
            matrix[i][j] = tmp;
            if (tmp != 0 && cnt_j < 2) cnt_j++;
            if (cnt_j == 2) row_true[i] = 1;
        }
        if (row_true[i] == 1) {
            int idx_1, idx_2;
            int num_1, num_2;
            int d;
            int cnt = 0;
            for (int j = 0; j < m; j++) {
                int tmp;
                tmp = matrix[i][j];
                if (tmp != 0 && cnt == 0) {
                    idx_1 = j;
                    num_1 = tmp;
                    cnt++;
                    continue;
                }
                if (tmp != 0) {
                    idx_2 = j;
                    num_2 = tmp;
                    break;
                }
            }
            d = (num_2 - num_1) / (idx_2 - idx_1);
            for (int j = 0; j < m; j++) {
                matrix[i][j] = (j - 0) * d + matrix[i][0];
            }
        }
    }
    for (int j = 0; j < m; j++) {
        int cnt_i = 0;
        for (int i = 0; i < n; i++) {
            if (matrix[i][j] != 0 && cnt_i < 2) cnt_i++;
            if (cnt_i == 2) column_true[j] = 1;
            break;
        }
        if (column_true[j] == 1) {
            int idx_1, idx_2;
            int num_1, num_2;
            int d;
            int cnt = 0;
            for (int i = 0; i < n; i++) {
                int tmp;
                tmp = matrix[i][j];
                if (tmp != 0 && cnt == 0) {
                    idx_1 = j;
                    num_1 = tmp;
                    cnt++;
                    continue;
                }
                if (tmp != 0) {
                    idx_2 = j;
                    num_2 = tmp;
                    break;
                }
            }
            d = (num_2 - num_1) / (idx_2 - idx_1);
            for (int i = 0; i < m; i++) {
                matrix[i][j] = (i - 0) * d + matrix[0][j];
            }
        }
    }

    while (q--) {
        int x, y;
        cin >> x >> y;
        if (matrix[x-1][y-1] != 0) cout << matrix[x-1][y-1] << endl;
        else cout << "Unknown" << endl;
    }

    return 0;
}

 

【阿里】算法工程师笔试题整理(13&14年) 选择题1、一次内存访问,SSD硬盘访问和SATA硬盘随机访问的时间分别是()A、几微秒,几毫秒,几十毫秒 B、几十纳秒,几十微秒,几十毫秒 C、几十纳秒,几十微秒,几十毫秒 D、几微秒,几十微秒,几十毫秒 解析:内存访问速度通常在50ns到80ns范围内,SSD硬盘的访问速度一般是SATA硬盘的一千多倍,所以答案选C 2、8进制数256,转化成7进制数是(B)A、356 B、336 阅读详情

相关推荐

分享一些阿里巴巴算法、数据工程师的笔试题以及答案

阿里巴巴算法、数据工程师笔试题 **1、**有三个结点的,可以构成多少个种叉树? **2、**一副牌52张(去掉大小王),从中抽取两张牌,一红一黑的概率是多少? 编程题: **3、**设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。情特别注意优化时间复杂度的常数。 4、已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找...

程序之道的博客 1029

聊聊我在阿里第一年375&晋升的心得

当下的市场环境无论是求职还是晋升,都挺难的,都在降本增效,寒气逼人,我能拿到晋升的门票,诚然是实力的体现,但也有运气的成分。没晋升也不一定是你的问题,放平心态,当下保住工作才是最重要的。哔哔了这么多,可能很多同学道理也都懂,估计就难在知行合一吧…人生最大的痛苦,就是你知道什么是对的,但却永远做出错误的选择,知道和做到这个巨大的鸿沟,你永远无法跨越。

yechaoa 1万+

R语言编程:阿里推笔试题之一

R语言编程:阿里推笔试题之一

weixin_38241812的博客 3478

2023年春招阿里巴巴全套1000道java面试笔试题及答案

zookeeper原理和适用场景* zookeeper watch机制* redis/zk节点宕机如何处理* 分布式集群下如何做到唯一序列号* 如何做一个分布式锁* 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗* MQ系统的数据如何保证不丢失* 列举出你能想到的数据库分库分表策略;回答面试题,切忌只是简单一句话回答,可以将你对概念的理解,特点等多个方面描述一下,哪怕你自己认为不完全切中题意的也可以说说,面试官不喜欢会打断你的,你的目的是让面试官认为你是好沟通的。

m0_73311735的博客 1767

阿里笔试——北京阿里笔试题总结

北京阿里笔试题

FPGA/MATLAB学习教程/源码/项目合作开发 919

阿里笔试——重庆阿里笔试题总结

阿里笔试——重庆阿里笔试题总体难度不大,但要求应聘者具备扎实的基础知识和良好的思维能力,并且能够在短时间内解决实际问题。此外,要求应聘者具备良好的沟通能力和团队合作精神,以及一定的创新思维和解决问题的能力。阿里非技术类笔试主要考察应聘者的综合素质和潜力,包括逻辑思维、沟通能力、领导力等方面。选择题:主要考察计算机基础知识,包括数据结构、算法、操作系统、网络等方面的基础知识,以及一些常见的编程语言和框架的使用。掌握扎实的基础知识和技能,包括计算机基础知识、编程语言和框架的使用、常用技术的了解和应用等。

FPGA/MATLAB学习教程/源码/项目合作开发 745

阿里某程序员吐槽:绩效375同事离职被批准,绩效325同事离职却被卡

在大家的印象里,能力强的员工离职时会被领导挽留,能力差的员工离职则会被直接批准,但有时候却未必如此。一个阿里程序员发帖吐槽:两个同事相继离职,绩效3.75的员工提出离职后,领导很愉快地同意...

架构师小秘圈 9696

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1674

3.25 阿里笔试题 2 AC python

3.25 阿里笔试题 2 AC python 给出一个二维矩阵,这个矩阵的每一行和每一列都是一个独立的等差数列,其中一些数据缺失了,现在需要推理隐藏但是可以被唯一确定的数字,然后对输入的查询进行回答。 输入描述: 第一行,n,m,q分别表示矩阵的行数,列数和查询的条数。 接下来的n行,每行m个数表示这个矩阵,0表示缺失数据。 接下来q行,每行两个数字i,j表示对矩阵中第i行第j列的数字进行查...

masdw1的博客 289

声品质粗糙度matlab,声品质的应用分析方法

声品质的应用分析方法2016-04-05 09:18:57阅读次数:14198摘要:声品质分析在噪声的主观评价方面已经得到越来越多的应用。本文比较了声品质分析与传统计权声级的区别,并介绍了在声品质分析的实际应用中,针对稳态信号、非稳态信号的几种不同分析方法,以及各分析方法的要求和特点。关键词:声品质,响度,尖锐度,粗糙度,波动度1前言传统评价噪声的方法主要为计权声压级,用以反映声音的大小。但是人耳...

weixin_30767323的博客 2439

告别环境报错:Qt Creator里配置Android SDK/NDK/JDK路径的完整避坑指南

本文详细解析了在Qt Creator中配置Android SDK/NDK/JDK路径的完整避坑指南,深入探讨了路径检测的内部机制、构建套件配置的隐藏逻辑以及项目级与全局配置的优先级。通过实际案例和高级排查技巧,帮助开发者解决常见的环境报错问题,提升Qt安卓开发效率。

weixin_42548829的博客 238

阿里20.3.25笔试题第一题

阿里20.3.25笔试题第一题 (动态规划,类似于路径搜索思想) (先po个代码哈 后续整理下思路再详细发出来) //阿里20.3.25笔试题第一题 (动态规划,类似于路径搜索) import java.util.Scanner; import java.util.Arrays; public class Main5 { public static void main(String...

bxg1234的博客 456

基于Simulink的转向控制系统仿真建模示例

本文完成了基于 Simulink 的 EPS 转向控制系统仿真,实现了:✅掌握 EPS 助力控制基本原理✅构建车速敏感的可变助力策略✅在 Simulink 中验证低速轻便、高速沉稳的手感✅达成“安全、舒适、高效”的现代转向系统。

xiaoheshang_123的博客 88

【后端研发笔试】3.25号 阿里巴巴笔试题

直接模拟吧 。 知识点补充 判断是否为大小写字母:Character.isLetter(String s) 关于Scanner得输入输出,请访问: 代码实现: package acm; import java.util.*; /** * 3.25阿里笔试 * Question1:easy * */ public class Main1 { public static void main(String[] args) { Scanner scanne...

CodingLJ 884

YOLO26改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 359

华为OD机试新系统真题-魔法咒语组合(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【魔法咒语组合】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【魔法咒语组合】多语言题解

qq_45776114的博客 670

3.25 阿里笔试题 1 动态规划 python

3.25 阿里笔试题 1 动态规划 作者:海森堡CSQ 链接:https://www.nowcoder.com/discuss/391530?type=1 来源:牛客网 第一题,给定一个数组n,比如 5 10 5 4 4 1 7 8 4 0 3 4 9 0 3 从每一列选择一个数,求出后一列减去前一列的绝对值的和的最小值 N = [[5, 3, 5, 4, 4], [1, 7, ...

masdw1的博客 484

Python爬虫实战:汽车之家车型参数与口碑数据抓取分析

在当今信息爆炸的时代,购车决策已从传统的4S店咨询转变为数据驱动的智能化过程。汽车之家作为国内领先的汽车信息平台,汇聚了海量车型参数、车主口碑和专业评测数据。本文将详细介绍如何使用Python最新爬虫技术构建一个高效、稳定的汽车数据采集系统,通过多维度数据分析辅助用户做出更明智的购车决策。本项目将采用异步爬虫、智能反爬绕过、数据清洗与分析等现代化技术栈,完整实现从数据采集到可视化分析的全流程。本文详细介绍了如何使用Python最新技术构建一个功能完整的汽车之家数据爬虫系统。

2201_76125261的博客 1490

2020年3月25日阿里笔试题

2020年3月25日阿里笔试题题目描述一python代码题目描述二求公差的python代码   仿佛人生总有一种魔咒,自己做的这场笔试题永远是最难的。不过今天的笔试题,真的难。来看题目。 题目描述一 给定一个数组n,然后给三个长度为n的数组,可以从这三个数组中选出一个长度为n的数组,第i个位置需要是从给出的三个数组第i个位置选择的,然后要求使这个数组后一项减前一项的绝对值之和最小。 输入示例:: ...

August-us的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2022阿里笔试分享(2022.3.25)

体型: 单选6道 + 多选6道 + 变成三道 编程: (小红去注册一个网站,输入字符串,要求当输入字符串长度 6<=str<=12且字符串内不能够包含数字字符) 输入2组数据,一个为整形数据代表小红一共会输入多少个字符串 2.字符串数据,作为小红申请的账号字符串 2.给定两组数据,问每组数据能够同时减1 多少次,要求不能够出现负数,每组数据的长度为5 (这题和leetcode上的题目类似) 同时运行N台电脑 示例输入如下 3. ps:第三题没时间做了,由于第一次笔试,它需要自己对数据进行

weixin_48030085的博客 1988

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

阿里笔试题(2015)

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,应该容纳400人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相

lv836735240的专栏 4万+

阿里巴巴笔试题

阿里巴巴笔试题 分类: 面试珠玑2011-10-25 11:05 13652人阅读 评论(79) 收藏 举报 阿里巴巴structclassvectorconstructor 1、有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页? A

Cloud-Datacenter-Renewable Energy-Big Data-Model 1782

算法-向量路径最小差值的和(阿里巴巴3.25笔试第一题)

算法-向量路径最小差值的和1、向量的最小插值和 1、向量的最小插值和 题目来源是阿里3.25下午的笔试题 本来想再过几天做阿里笔试题,先刷刷题练练手,结果突然在微信群里看到,内推后一周内需要参加笔试,否则就会进简历池,无奈,只能硬顶上了… 一共有两道题目,第二题没来得及做,第一题暴力发现通过率感人,由于没记住第二题,现在只对第一题复盘 题目大概是这样的: 给一个3行n列的矩阵,从第一列开始,每一列...

qq_23594799的博客 606

阿里_一道备受关注的前端开发笔试题

上星期三参加了阿里的前端开发的笔试,今天接到了阿里的第一轮面试通知,记得考后感觉题目不会很难哦,毕竟考的东西不外乎:XTHML/CSS/JS 的知识,但心里还是怕被over了,因为自己感觉当时考试的卷面很不整洁,画了又画的,满是伤痕~~~  (在这提起这缺点,希望自己以后要多多注意,在思考完全后再动笔,字也要写清楚, 勉励自己~)。 在接到面试通知后,我在网上也找到很多关于这道题的很多解答

徐佳的专栏 7915
上一篇: git 上传提示 remote origin already exist 解决方法
下一篇: 腾讯3.28客户端面试一面面经
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值