2020年3月23日阿里笔试题[通俗易懂]

2020年3月23日阿里笔试题[通俗易懂]2020年3月23日阿里笔试题题目描述题目分析  这是阿里的第二场笔试,本来觉得没啥好写的,一道排列组合,一道迷宫。没有什么发挥的空间。但是后来在和大家讨论的过程中,把这道题的公司给敲出来了,但是这公式也不能白敲,干脆写一篇文章总结一下。题目描述一共n个人,从中选出任意个人组成一队,我们不妨记为k,再从k个人选出一人做队长。题目分析  这是一个典型的排列组合问题,从n个人选出k个,可…

大家好,又见面了,我是你们的朋友全栈君。

2020年3月23日阿里笔试题

  这是阿里的第二场笔试,本来觉得没啥好写的,一道排列组合,一道迷宫。没有什么发挥的空间。但是后来在和大家讨论的过程中,把这道题的公司给敲出来了,但是这公式也不能白敲,干脆写一篇文章总结一下。

题目描述

一共n个人,从中选出任意个人组成一队,我们不妨记为k,再从k个人选出一人做队长。

题目分析

  这是一个典型的排列组合问题,从n个人选出k个,可能是 C n k C_n^k Cnk,从k个人选出一个队长,种类数是 k k k,但是k可以是 1 1 1~ n n n,所以这个题的结果就是 ∑ k = 1 n k C n k \sum_{k=1}^nkC_n^k k=1nkCnk,这样写代码是可以过一些例子的。
  但是不会全过,因为复杂度过大。当然可以在求 C n k C_n^k Cnk的时候利用 C n k = C n k − 1 ∗ n + 1 − k k C_n^k=C_n^{k-1}*\frac{n+1-k}{k} Cnk=Cnk1kn+1k这个公式,因为 C n k − 1 C_n^{k-1} Cnk1我们也是要计算的,这样就会减少一定的复杂度,然后又能多过一些例子。
  我们还会想到 C n k C_n^k Cnk= C n n − k C_n^{n-k} Cnnk,这样又可以少一些计算。我们这时候就需要把 k ∗ C n k 和 ( n − k ) ∗ C n n − k k*C_n^k和(n-k)*C_n^{n-k} kCnk(nk)Cnnk一起计算,发现正好等于 n ∗ C n k n*C_n^k nCnk或者 n ∗ C n n − k n*C_n^{n-k} nCnnk
  到这里如果熟悉排列组合的同学,可能会想到了如果把数列反着再加一次。
在这里插入图片描述

  如果说这个题有什么需要总结的,就是一旦确定一个题目是排列组合的问题之后,可以去考虑使用公式优化计算量,当然时间紧迫,没有时间的话,就很难去优化了,还是需要注意平时多积累。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143075.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月22日 下午12:20
下一篇 2022年5月22日 下午12:40


相关推荐

  • 什么是Java语言(学习一门语言首选了解这们语言)

    什么是Java语言(学习一门语言首选了解这们语言)学习一门语言首先要对他有一定的了解。否则就会失去最基本的东西。一、什么是Java通俗将就是计算机语言的最新版本,计算机经历了C语言、C++语言、以及C+±-语言。这里的C+±-语言就是Java语言。Java语言是C语言的第三个计算机语言革命,C++语言是对C语言不足处的改进,的一门语言。而Java语言是面对C++语言的不做又一步的改进。为最大的革进新颖,决定不叫C+±-而后一些过程,最终叫Java。Java与C语言以及C++语言相比的优势其又跨平台性、可移植性。二、sunjdk众所周知,java

    2022年7月7日
    23
  • IDEA启动后不自动打开最近项目,如何修复?

    IDEA启动后不自动打开最近项目,如何修复?

    2026年3月16日
    2
  • Idea激活码最新教程2023.3.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.3.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 3 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 3 3 成功激活

    2025年5月27日
    3
  • initramfs实作「建议收藏」

    initramfs实作「建议收藏」这个是翻译来的,原文地址:http://www.landley.net/writing/rootfs-howto.html //TechTip:Howtouseinitramfs.怎样使用initramfs 工作过程简述在2.6kernel启动时,它把rootfs作为它的第一个文件系统挂载(注意:这里的rootfs是真名!!!不是roo

    2022年8月11日
    10
  • 查看win7系统激活信息时候常用的一些命令

    查看win7系统激活信息时候常用的一些命令1.slmgr.vbs-dli  显示:操作系统版本、部门产品密钥、许可证状态  2.slmgr.vbs-dlv  显示:最为详尽的激活信息,包括:激活ID、安装ID、激活截止日期  3.slmgr.vbs-xpr  显示:是不是彻底激活  4.slmgr.vbs-ipk  更换WIN7序列号  5.slmgr.vbs-ato  激活WIN7 …

    2022年5月30日
    67
  • springboot整合kafka配置_kafka怎么使用

    springboot整合kafka配置_kafka怎么使用本文是SpringBoot+Kafka的实战讲解,如果对kafka的架构原理还不了解的读者,建议先看一下《大白话kafka架构原理》、《秒懂kafkaHA(高可用)》两篇文章。一、生产者实践 普通生产者 带回调的生产者 自定义分区器 kafka事务提交 二、消费者实践 简单消费 指定topic、partition、offset消费 …

    2022年4月19日
    696

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号