洛谷P1036题解

news/2024/7/20 20:48:50 标签: 算法, 深度优先, 图论

一、问题引出

[NOIP2002 普及组] 选数

题目描述

已知 n n n 个整数 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn,以及 1 1 1 个整数 k k k k < n k<n k<n)。从 n n n 个整数中任选 k k k 个整数相加,可分别得到一系列的和。例如当 n = 4 n=4 n=4 k = 3 k=3 k=3 4 4 4 个整数分别为 3 , 7 , 12 , 19 3,7,12,19 3,7,12,19 时,可得全部的组合与它们的和为:

3 + 7 + 12 = 22 3+7+12=22 3+7+12=22

3 + 7 + 19 = 29 3+7+19=29 3+7+19=29

7 + 12 + 19 = 38 7+12+19=38 7+12+19=38

3 + 12 + 19 = 34 3+12+19=34 3+12+19=34

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数: 3 + 7 + 19 = 29 3+7+19=29 3+7+19=29

输入格式

第一行两个空格隔开的整数 n , k n,k n,k 1 ≤ n ≤ 20 1 \le n \le 20 1n20 k < n k<n k<n)。

第二行 n n n 个整数,分别为 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn 1 ≤ x i ≤ 5 × 1 0 6 1 \le x_i \le 5\times 10^6 1xi5×106)。

输出格式

输出一个整数,表示种类数。

样例 #1

样例输入 #1

4 3
3 7 12 19

样例输出 #1

1

提示

【题目来源】

NOIP 2002 普及组第二题

二、求解思路

这类题目的关键就是用搜索的方式,以题中数据为例,如图所示:
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/1a7e76fff3d740e1bab851fb303ebec7.jpeg#pic_center
话不多说,直接上代码:

  • startx表示升序排列,以免算重
  • m代表现在选择了多少个数
  • sum表示当前的和
#include <iostream>
using namespace std;
int n,k,a[22],ans=0;
int isPrime(int n)
{
    if (n==1)
    {
        return false;
    }
    if (n==2)
    {
        return true;
    }
    for (int i = 2; i*i <= n; i++)
    {
        if (n%i==0)
        {
            return false;
        }
    }
    return true;
}
void dfs(int m,int sum,int startx)
{
    if (m==k)
    {
        if (isPrime(sum))
        {
            ans++;
        }
        return;
    }
    for (int i = startx; i <= n; i++)
    {
        dfs(m+1,sum+a[i],i+1);
    }
    return;
}
int main()
{   
    cin>>n>>k;
    for (int i = 1; i <= n; i++)
    {
        cin>>a[i];
    }
    dfs(0,0,1);
    cout<<ans;
}

http://www.niftyadmin.cn/n/332707.html

相关文章

国考省考行测:图形推理题1,2平移,旋转,翻转

国考省考行测&#xff1a;图形推理题1,2平移&#xff0c;旋转&#xff0c;翻转 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff…

Spring Security OAuth2实现单点登录:简化多个系统之间的登录流程

Spring Security OAuth2实现单点登录&#xff1a;简化多个系统之间的登录流程 一、介绍OAuth21. OAuth2的定义和作用2. OAuth2的优点和使用场景 二、Spring Security1. Spring Security的介绍2. Spring Security的特点和优势 三、OAuth2与Spring Security的结合1. OAuth2在Spri…

8年经验来面试20K的测试岗,连基础都不会,还不如招应届生。

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3、4年工作经验&#xff0…

Istio零信任安全架构设计

主要分为几个模块 安装安全概念整体安全架构源码 1.安装istio (windows环境) windows安装Rancher的步骤 : https://docs.rancherdesktop.io/getting-started/installation, docker desktop开始面向中大型企业收费: https://baijiahao.baidu.com/s?id1709665495660071676&…

golang交叉编译到mips平台代码参数解释

例如&#xff1a; go build -ldflags"-s -w" -o your_binary -v -tags netgo -installsuffix netgo -ldflags -extldflags "-static" -a -x -v -ldflags -w -s -linkmode external -extldflags "-static -lpthread" -ldflags"-s -w"…

经典神经网络(3)Vgg-Net及其在Fashion-MNIST数据集上的应用

经典神经网络(3)VGG_使用块的网络 1 VGG的简述 1.1 VGG的概述 VGG-Net 是牛津大学计算机视觉组和DeepMind公司共同研发一种深度卷积网络&#xff0c;并且在2014年在ILSVRC比赛上获得了分类项目的第二名和定位项目的第一名。通过使⽤循环和⼦程序&#xff0c;可以很容易地在任…

0517作业

1.led1点亮 2.用户程序控制3盏灯亮灭 mycdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include "head.h" #include <linux/io.h> unsigned int major;char kbuf[128…

快码住!!! 二叉树概念、重要性质、存储结构 技巧大总结!

文章目录 树树的概念树的表示树在实际中的应用 二叉树二叉树的概念特殊的二叉树 二叉树的性质二叉树性质应用的练习题 二叉树的存储结构顺序结构链式结构 树 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0)个有限结点组成的一个具有层次关系的集合。把它叫做…