从排列到组合 |
您所在的位置:网站首页 › 排列组合解释和算法 › 从排列到组合 |
前段时间在洛谷3.0上刷到一个题,让本人挠头了一段时间,RT: 题目描述已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和为素数:3+7+19=29。
首先解决这个问题显然需要把输入的所有组合罗列出来,求和再判读素数就好啦。这篇文章主要是解决组合排列问题,所以判断素数这里就忽略啦o(^▽^)o,但对于我这个算法小白来说这个题可不太容易,如何用通俗易懂的方式理解呢? 在这里先向大家摘取《啊哈!算法》书中第四章第一节中用深度优先搜索解决全排列的方法。从书中的全排列例子,我们再自己推到排列,再由此推及到组合。 例·1、2、3的全排列是: 123、132、213、231、312、321。 求1、2、3的全排列: for(a=1; a |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |