首页 / 阿里笔试2020
#

阿里笔试2020

#
7784次浏览 221人互动
此刻你想和大家分享什么
热门 最新
头像
2021-08-06 19:51
Java
点赞 评论 收藏
转发
头像
2020-03-25 15:08
C++
#阿里笔试2020# 看到了这里都在讨论3.23的两道题,但是看到大家解法好像都不是太好,我分享一下我的解题方法吧。第一题 求排列组合。在n个人中可以取任意数目的人数组成一队,并且可以在其中选队长,问一共有多少种组合方式,最后的结果模10^9+7.这题更像是一个数学题。由组合公式可知 C(m,N)=n!/((n-m)!+m!)每个组合中队长的选举可能有m种那么每种人数组合就是C(m,N)*m 举个例子 假设N=4则一共有 C(1,4)*1+C(2,4)*2+C(3,4)*3+C(4,4)*4 =32种那么N个人一共有n+n*n(n-1)+n*(n-1)(n-2)+n(n-1)(n-2)(n-3)……+n*n(n-1)+n种,值得注意的是由于每个因子都乘了一个m 所以和组合公式有一点点差别。原本的本来是C(m,n)=C(n-m,n),现在是C(m+1,n)=C(n-m,n)两边完全对称,我们只需要算到n/2,然后乘以二就可以了。则上述公式可以提公因式得:n(1+(n-1)(1+(n-2)(1+(n-3)(……1+(n-n/2)(1)))))*2。这里又有一个小陷阱。奇数和偶数的公式是不一样的,偶数当然两边完全一致,直接乘2就好了,奇数中间只有一个,不能乘2,所以我们最后加上中间那个组合就可以了。C++代码如下:int howMany(int n) {int result = 0;for (int i = n/2+1; i {result = (result + 1)*i;}if (n % 2 == 0)//偶数 直接对半*2{result= result*2;}else {//奇数  偶数的基础上+上n/2的排列组合int temp1=1,temp2=1;for (int i = n / 2 + 1; i temp1 *= i;}for (int i = 1; i temp2 *= i;}result = temp1 / temp2 + result;}return result;}第二题写不下了 见评论
投递阿里巴巴等公司10个岗位 C++求职圈
点赞 评论 收藏
转发
头像
2020-03-30 20:18
已编辑
iOS开发
今晚阿里有人做吗?
为什么第一道只能通过测试用例。。
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
转发
头像
2020-03-25 16:57
Java
点赞 评论 收藏
转发
头像
2020-03-23 22:17
已编辑
Java
3月23日阿里笔试
两道一共a了0%的出来打卡。
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
转发
阿里笔试417
有没有老哥交流一下第一题啊,我太菜了,没具体的思路。
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
转发
头像
2020-03-19 15:19
已编辑
前端工程师
点赞 评论 收藏
转发
玩命加载中
牛客网
牛客企业服务