前两天看到一道小米的面试题

2019-03-19 10:33:27 +08:00
 mskf

是这样的,如果你玩过 dota2 的话,很简单一句话,n 个球的卡尔有多少个技能

没玩过的话,大概介绍一下,卡尔有三个球,冰球 Q,雷球 W,火球 E,不同的组合对应不同的技能 QQQ (极冷),QQW (峰哥漫步),QQE (冰墙),WWW (磁暴),WWQ (吹风),WWE (灵动迅捷),EEQ (火人),EEW (陨石),EEE (天火),QWE (推波)一共十个技能(不算天赋)

所以说如果卡尔有 4 个球,或者 n 个球,他会有几个技能呢

16302 次点击
所在节点    职场话题
113 条回复
jetyang
2019-03-19 14:39:11 +08:00
说写程序的可以歇歇了,这是笔试里的一道选择题。正解 @chenno9 已经给出来了,当然还有更简洁的通项表达,多看看组合数学和概率论呗
Ncanback
2019-03-19 14:46:33 +08:00
排列组合的典型 为什么会想到用回调递归?
tohert
2019-03-19 14:50:03 +08:00
我怎么想到的是笛卡尔乘积。。。
Arxz
2019-03-19 14:51:37 +08:00
只会用 dp...排列组合想了半天没想出来
justfan
2019-03-19 14:53:00 +08:00
```
#include "stdio.h"
void main()
{
char a[3] = {'q', 'w', 'e'};
int i,j,k;
char tmp1, tmp2, tmp3;
for(i=0;i<3;i++)
{
tmp1 = a[i];
for(j=i;j<3;j++)
{
tmp2 = a[j];
for(k=j;k<3;k++)
{
tmp3 = a[k];
printf("%c%c%c\n", tmp1, tmp2, tmp3);
}
}
}
}
```
mskf
2019-03-19 15:00:55 +08:00
@justfan 3^3=27>10,所以有重复的,面试题一般不会考这么简单的三重循环
lxy42
2019-03-19 15:03:25 +08:00
justfan
2019-03-19 15:05:05 +08:00
@mskf 不是三重循环 for(j=i;j<3;j++) for(k=j;k<3;k++)
NBGGA
2019-03-19 15:08:33 +08:00
你以为他们想考你算法,其实他们只想招个 DotAer🤣
across
2019-03-19 15:10:29 +08:00
across
2019-03-19 15:11:35 +08:00
@across 啊,我忘了,卡尔技能是没有顺序关系的
isaacpei
2019-03-19 15:22:03 +08:00
居然没人发 oeis??? 我来补上 http://oeis.org/A001700
Vitta
2019-03-19 15:26:54 +08:00
1 技能加攻击,2 技能加速度,3 技能加回血
VoidChen
2019-03-19 15:56:31 +08:00
那啥,我没玩过 dota,但是我看你们的描述,你们可能搞错了一点东西,n 个球,有没有限制球能不能重复用,另外就是 n 个球都是什么球,比如 n 个都是冰球,当 n > 2 的时候 1 个技能。我觉得这道题有点问题吧,跟 N 的关系好像就只是是不是> 2 了?
VoidChen
2019-03-19 15:58:20 +08:00
@VoidChen 或者说 n/3 个技能。。。。。。。。
VoidChen
2019-03-19 16:03:31 +08:00
不好意思,,就是排列组合。。我把这道题的意思想成 LOL 的波珠妹了,以为一共就 3 种球。。。。。
ccpp132
2019-03-19 16:06:33 +08:00
n 种球每次 m 个就是 C(n + m -1, n)....
高中组合数学知识其实够用了
相当于 x1 + x2 + ... + xn = m 的正整数解的个数,把 m - 1 个隔板和 n 个球放到一起排
ccpp132
2019-03-19 16:10:15 +08:00
@mskf @chenno9 帮你们化简了,比较好手算,滑稽
VagrantSven
2019-03-19 16:16:27 +08:00
7C3=35,七个球涂黑三个球当分割
Ginray
2019-03-19 16:17:44 +08:00
@chenno9 请问 c(n-n,n-1) 这个是代表什么意思,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/546059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX