从排列到组合

您所在的位置:网站首页 排列组合解释和算法 从排列到组合

从排列到组合

2024-07-08 11:12| 来源: 网络整理| 查看: 265

  前段时间在洛谷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