**

2020年阿里巴巴实习生线上笔试试题

**

题目描述:n个人排成一排,每个人都拥有自己的能量值,越靠前的能量值越高。每个人可以崇拜唯一的能量值比他高的人,也可以没有崇拜对象。现在n个人进行投票,每个人可以投自己或者是跟着崇拜对象进行投票,求出每个人可能得到的最多票数。

输入:第一行为人数n,是一个正整数;第二行Ai(1<=i<=n)为第n个人的崇拜对象,是一个整数,之间用空格分隔。
输出:n行整数,第i行为第i个人能得到的最多票数。

示例:
输入:
4
0 1 1 1
输出:
4
1
1
1

题目解析:
首先我们想到用int型数组存放第二行输入的整数,可以得到一个具有崇拜关系的数组,其次定义一个长度为n的存放第n个人能得到的最大票数的数组。那么,数组中每个元素的值到死如何确定呢?由于每个人无论有无崇拜的人,都可以给自己投一票,于是我们可以把数组中所有元素初始化为1。那么如何才能确定数组中每一个元素最终的值呢?这取决于崇拜这个人的人能给他投的票数到底有多少,但是崇拜是有条件的,即:所有人只能崇拜能量值比他高的人,也就是说排在前面的人的票数其实是跟排在后面的人所能投的票数息息相关的。便想到采用逆序遍历和修改数组的方法解决此问题!

代码如下:

package practice;
import java.util.Scanner;
public class test1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);int n=input.nextInt();int shuru[]=new int[n+1];      //存放n个人的崇拜对象shuru[0]=-1;for(int i=1;i<=n;i++) {shuru[i]=input.nextInt();       //存放每个人当前拥有的票数}int piaoshu[]=new int[n+1];piaoshu[0]=-1;for(int i=1;i<=n;i++) {piaoshu[i]=1;                 //初始化每个人至少有来自自己的那一票}/*选择从后往前访问和修改数组,原因是排在后面的人可能崇拜排在其前面的人,排在前面的人的票数会受到后面的人的影响* 逆序访问数组方可解决此问题*/for(int i=n;i>=1;i--) {if(shuru[i]!=0) {   /*shuru[i]等于0,说明没有崇拜对象,能得到的最大票数就是当前拥有的票数。shuru[i]不等于0,说明此人所有崇拜的人,崇拜的人的票数应该加上此人当前的票数*/   //piaoshu[shuru[i]]表示第i个人所崇拜的人的当前票数piaoshu[shuru[i]]+=piaoshu[i];}}for(int i=1;i<=n;i++) {System.out.println(piaoshu[i]);}}
}

测试及分析:

分析:
5
0 1 2 3 1
5
3
2
1
1

初始化,5个人的当前票数为:1 1 1 1 1
逆序遍历数组:
(1)第五人崇拜第一人,第一人票数加上第五人的当前票数,
此时当前票数为:2 1 1 1 1
(2)第四人崇拜第三人,第三人票数加上第四人的当前票数,
此时当前票数为:2 1 2 1 1
(3)第三人崇拜第二人,第二人票数加上第三人的当前票数,
此时当前票数为:2 3 2 1 1
(4)第二人崇拜第一人,第一人票数加上第二人的当前票数,
此时当前票数为:5 3 2 1 1
(5)第五人无崇拜对象,不变
遍历完成,最终每个人能得到的最多票数为:5 3 2 1 1

2020年阿里巴巴实习生线上笔试试题相关推荐

  1. CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)

    线上笔试:20不定项选择+2编程       --2019.01.15 编程1:[LeetCode]有效的括号(C语言解法) 编程2:分离字符串,提取有用信息(下面是自己当时写的,因为不让用IDE,所 ...

  2. 2021 Shopee AP( Apprentice Program)领航实习生项目(非coding方向):线上笔试总结

    现在是 2021.12.1,我在一周前刚刚提交了如题的实习项目,两天前收到线上笔试的通知,刚刚做完,感觉总体难度不大,故略作总结: 考试结构 1)GMAT Data Sufficiency,总计20m ...

  3. 招银科技2018春招线上笔试题

    招银科技2018春招线上笔试题 文章目录 招银科技2018春招线上笔试题 专业知识 1.选择题(30道) 2.简答题 (1道) 3.数据库题(4道) 4.算法题(2道) 心理测试(100道) 总结 专 ...

  4. 记Booking.com iOS开发岗位线上笔试

    今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...

  5. 一切转型始于数据和模型 | 2020 MATLAB EXPO 中国线上用户大会:即将上线

    2020 MATLAB EXPO 中国线上用户大会 一切转型始于数据和模型 2020 年 7 月 21-24 日 | 线上直播 MATLAB 和 Simulink,作为业界普遍使用的科学计算与模型仿真 ...

  6. 关于2020西门子杯工业自动化线上赛总结(初赛过控篇)

    关于2020西门子杯工业自动化线上赛总结(初赛过程控制篇) 初赛赛程回顾 PID控制器 三个基本实验 液位+温度?PID调参从入门到放弃 总结与感想 初赛赛程回顾 本来的确不想回顾这个比赛的,自己第一 ...

  7. 2020-09-02---三七互娱广州Java平台工程师线上笔试总结

    三七互娱广州Java平台工程师线上笔试总结 一.第一部分逻辑选择题 该题型为推断题,找规律 题量为35题,时间为25分钟 举例一个简单的: 也就前几个是这个难度的,后面的难度越来越大,我做了20多个然 ...

  8. 如何策划一场银行校招线上笔试?

    策划一场银行校园招聘线上笔试,只需要4步. 牛客基于服务的上千家企业现状发现,银行业大多数企业在校园招聘的笔试环节会面临这些核心问题: 缺乏出题专业度:大多数企业出题者为业务部门员工,技能水平不一,出 ...

  9. 健身房2020的生路:线上化自救与平台化赋能

    ​ 最近一个月,多地健身房都被爆面临倒闭困境,特别是一些连锁健身房品牌.不难看出,即便已解禁数月,但线下健身行业的复苏还是个大问题,反而还呈现出加速恶化的迹象. 结合实际情况看,健身房面临的普遍经营困 ...

  10. 飞书面向所有企业和组织免费开放,2020我们一起拥抱线上协作新方式

    自年初发酵一直持续至今的黑天鹅事件,让不少实体企业和创业公司都遭遇市场重新洗牌乃至不得不面临离场的终极大考.特殊时期的在线办公效率对企业能否恢复正常运转,最终度过难关,产生了极大的影响. 为帮助企业和 ...

最新文章

  1. Robotium自动化测试框架实用教程(图)
  2. android开机启动service
  3. java集合系列_Java集合系列01-Java集合概述
  4. Java笔记-RabbitMQ的消息确认机制(事务)
  5. 【BZOJ1060】[ZJOI2007] 时态同步(树形DP)
  6. oracle无效的关系运算符_每日一课 | Java 8中的instanceof运算符和访客模式替换
  7. Master主动向Slave发送binlog?还是Slave主动向Master要binlog?
  8. android 注册多个服务器,android-根据服务器响应创建多个处理程序并...
  9. python+django+vue某小区物业管理系统
  10. 计算机交并符号,数学并集符号
  11. ubuntu如何更改IP地址
  12. Python 小节案例-计算体脂率
  13. 20182319彭淼迪 2019-2020-1 《数据结构与面向对象程序设计》实验一报告
  14. python支持多种编程范式吗_理解真格量化的Python编程范式
  15. php使用curl函数采集,PHP采集相关教程之一:CURL函数库
  16. android 直播推流sdk,Android——直播推流SDK
  17. 食品加工企业自营商城小程序开发,帮助企业增加销售渠道,提高销量
  18. vmware创建win7虚拟机
  19. 4款让人心疼的电脑软件,由于免费又实用,常被同行挤压
  20. 局域网内无法访问打印机的问题

热门文章

  1. 说一下html5 drag api,HTML5 DragAPI
  2. android自动生成cardview,CardView
  3. Matconvnet学习笔记
  4. OSI七层模式简单通俗理解
  5. 电机与拖动课程最全思维导图笔记
  6. 零基础 VS2012 串口编程
  7. 乐高叉车wedo教案_15乐高教育wedo编程机器人手臂教案
  8. python截图并识别文字
  9. Python语音基础操作--2.4语音信号生成
  10. RGMII2GMII 分析