西西河

主题:【纪事】失败的苹果面试(上) -- landlord

共:💬133 🌺776
全看分页树展 · 主题 跟帖
家园 去网上找个能生成组合或叫子集的算法

你这个问题其实是这样,对一个n个数的集合,求他从C(1,n)到C(n,n)的所有组合,或者说是不包括空集的所有子集,一共是2的n次方减1个。

比如三个数的集合{a,b,c},他的所有组合或者所有子集就是{a},{b},{c},{a,b},{b,c},{a,c},{a,b,c}。

然后再验证这些子集的和是否等于N,也就是

a=N?

b=N?

c=N?

a+b=N?

b+c=N?

a+c=N?

a+b+c=N?

只要能生成所有子集,求和验证很简单吧。

有些语言可能本身带的函数库就有这个功能,像C++的STL?自己写一个,我想了想好像稍微有一点麻烦,我的手也比较生了,网上找这么一个算法很容易。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河