部分和问题

article/2025/10/26 9:00:30

题目来源

挑战程序设计竞赛(第二版)

语言

C/C++

题目

部分和问题

描述

给定整数 a1, a2, ..., an,判断是否可以从中选出若干数,使它们的和恰好为 k。

样例1

输入:

n = 4

a = {1, 2, 4, 7};

k = 13

输出:

Yes

样例2

输入:

n = 4

a = {1, 2, 4, 7};

k = 15

输出:

No

思路

这道题目可以分解成两步,第一步先选取若干数,第二步对这些数进行求和判断是否等于 k。

以样例 1 为例,输入 4 个数,选取其中的若干数,求和,判断其和是否为 13。从头对这 4 个数进行依次访问,既然要选取若干数,那么每个数都有被选中或者弃选的可能(2 种情况),可以将整个选数的情况看做一棵二叉树,从根结点到叶子结点的路径就成为一组选数的可能。

(该图前两个数的情况)

只需要对这棵树进行遍历,每次遍历到叶子结点时判断一下当前的 sum 是否与 13 相等,若相等为找到一组数据,不相等继续遍历,若这棵树从头遍历一遍没有出现想要的结果,则判定无结果。

 

对这棵树进行遍历,我们可以使用深度优先搜索(DFS)。

代码

#include <iostream>
#define MAXBUF 256int n = 4;
int k = 13;
int a[MAXBUF] = {1, 2, 4, 7}; bool dfs(int i, int sum);int main(int argc, char *argv[]) {using namespace std;if (dfs(0, 0)){cout << "Yes";} elsecout << "No";return 0;
}// i 为第 i 个数据 a[i-1],sum 为当前部分和 
bool dfs(int i, int sum)
{if (i == n){	// DFS 停止条件 return sum == k;} if (dfs(i + 1, sum)){	// 下个数据不加 return true;}if (dfs(i + 1, sum + a[i])){	// 下个数据加 return true;} return false;	// 遍历所有结果都无符合条件 
} 

时间复杂度

对 n 个数进行遍历,每个数都有 2 种情况,因此时间复杂度为 O(2^n)。

所涉及的知识点

深度优先搜索(DFS)

 

 

 

 


http://chatgpt.dhexx.cn/article/nQ5DDq6r.shtml

相关文章

【UML】2.部分与整体的媒介:关系

UML模块中的任何事物都不是独立存在的&#xff0c;他们之间存在着一定的关系。下面就对这些关系&#xff0c;分类了解一下。 一&#xff0e;概念 【关联】Association 两个类存在某种语义上的联系&#xff0c;关联有单向关联和双向关联。 【聚合】Aggregation 类之间是整体…

干货!基于部分-整体关系的概念、关系和物理场景认知推理

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 人类视觉感知的一个关键方面是能够将视觉场景解析为单个对象并进一步分解为对象部分&#xff0c;形成部分-整体层次结构。这种复合结构可以产生丰富的语义概念和关系&#xff0c;从而在视觉信号的解释和组织以及…

设计模式.组合模式(整体和部分关系, 树和Node,透明组合和完全组合)

抽象角度看 一棵树有很多节点&#xff0c;根据位置可以分为&#xff1a;根节点&#xff0c;中间节点&#xff0c;叶子节点 所有的节点都是树节点 这两句话转换为代码就是&#xff1a; 你可以有三个Node类&#xff0c;RootNode&#xff0c;TempNode&#xff0c;LeafNode。当然…

HINSTANCE (句柄相关)

在win32下与HMODULE是相同的东西&#xff0c;在Win32下还存在主要是因为win16   程序使用HINSTANCE来区别task。   区别&#xff1a;   Handle 是代表系统的内核对象&#xff0c;如文件句柄&#xff0c;线程句柄&#xff0c;进程句柄。   HMODULE 是代表应用程序载入的…

为什么需要传递HINSTANCE给CreateWindow?

Win32中有两个API函数&#xff0c;CreateWindow和RegisterClass。它们有一个HINSTANCE参数&#xff0c;很多人对这个参数不是很理解&#xff0c;今天就来讲一讲。 窗口类的名称还不足以唯一地确定这个窗口类。每一个进程都会拥有它自己的窗口类列表&#xff0c;而在这个列表中…

HINSTANCE数据类型

作者&#xff1a;马 岩&#xff08;Furzoom&#xff09; &#xff08;http://www.cnblogs.com/furzoom/&#xff09;版权声明&#xff1a;本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接&#xff0c;未经作者同意请不要删除此段声明&#xff0c;感谢…

【引用】HINSTANCE

在win32下与HMODULE是相同的东西&#xff0c;在Win32下还存在主要是因为win16 程序使用HINSTANCE来区别task。 区别&#xff1a; Handle 是代表系统的内核对象&#xff0c;如文件句柄&#xff0c;线程句柄&#xff0c;进程句柄。 HMODULE 是代表应用程序载入的模块&#xff0c;…

hInstance是什么参数?

熟悉C编程的人都知道main函数带有2个参数&#xff1a;arc和argv&#xff0c;完整的main函数定义是&#xff1a;int main(int argc, char *argv[])。argc指示程序启动时命令行参数的个数&#xff0c;argv则包含具体的参数字符串。 如果有程序叫“hello.exe”&#xff0c;直接启动…

hInstance是什么参数

熟悉C编程的人都知道main函数带有2个参数&#xff1a;arc和argv&#xff0c;完整的main函数定义是&#xff1a;int main(int argc, char *argv[])。argc指示程序启动时命令行参数的个数&#xff0c;argv则包含具体的参数字符串。 如果有程序叫“hello.exe”&#xff0c;直接启…

外卖小程序邀请入口获取推广路径

外卖小程序邀请入口 饿了么小程序邀请入口 1.手机应用商城搜索 淘宝联盟app,让后下载,登录建议直接选淘宝登录,让后按照下图的步揍即可. 淘宝联盟APP获取推广appid和path的地方&#xff0c;这是两个不同的每日红包。 2.另外饿了么小程序里面有个邀请有礼的&#xff0c;通过上…

万能门店小程序可diy完整前后端源码

这个是一位朋友付费分享的万能门店小程序&#xff0c;听他说功能挺强大的&#xff0c;功能也挺全面的。 有必须提醒一下&#xff1a;小程序代码分为前端和后端。 前端代码&#xff1a;例如&#xff1a;用“微信开发者工具”上传至微信官方审核就可以了。 后端代码&#xff1…

uniapp 生成微信小程序码

第一步创建一个容器&#xff0c;展示图片 <view style"margin: 49rpx auto;width: 300rpx;height: 300rpx;"><image :src"maskData" style"width: 100%;" longtap"longtap"></image> </view> 功能是&#x…

微信小程序的推广思路与方法,详细思路解析

简单来说&#xff0c;小程序就是微信上的APP&#xff0c;它内生于微信&#xff0c;坐享10亿流量&#xff0c;而且不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或者搜一下即可打开应用。今天&#xff0c;我们就来看一看微信小…

替你发优惠券,为了推广小程序微信真是豁出去了

微信iOS 6.6.6版本上线了! 虽然App Store的新功能里,只写了“可保留未编辑完的朋友圈”。但心细如发的道爷依然发现几大重要更新,解决的痛点,必将让10亿用户为之小嗨一把,小程序也迎来了新的春天!另外,安卓版已经正式上线了! 微趋道,就是小程序 本次主要更新了以下内…

小程序介绍

1. 小程序介绍 微信小程序&#xff0c;简称小程序&#xff0c;英文名 Mini Program &#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现 了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用 1.1 为什么是微信小程序&#xff1f; 微信有海…

小程序快速推广方法,你知道多少?

很多人觉得小程序的风口已经过去&#xff0c;其实不然&#xff01;就从这次疫情看&#xff0c;很多平时只做线下的大型餐饮店&#xff0c;都开始上线外卖平台&#xff0c;如果品牌具有一定规模的话&#xff0c;比起依托第三方的外卖平台&#xff0c;肯定是开发自己的小程序性价…

视频号推广小程序是什么;助你快速引流变现;丨国仁网络资讯

目前微信已经退出了视频号推广小程序,但对于大多数创作者来说还不知道它是干啥的。视频号推广小程序可以比喻视频号“dou+”, 它是腾讯官方专门为视频号博主打造的,以推广视频号内容为主,主要针对三个方向:基础定向投放,可以限定性别、年龄、地域的人群;投放指定账号的粉…

如何快速推广微信小程序,并通过微信小程序赚取睡后收入

微信小程序的搭建&#xff1a; 1、使用邮箱注册微信小程序帐号。 2、完善小程序主体。个人认为小程序的名称以及图标很重要。名称要言简意干&#xff0c;让用户根据名称就能知道小程序是做什么的。图标要简洁、清爽&#xff0c;并且符合主题。 3、开发小程序。自己具有开发能…

获取小程序appid和path教程详细版

打开你需要获取appid的小程序&#xff0c;这里以“饿了么”小程序为例&#xff0c;然后点击右上角的图标 以下为小程序path获取方法 登录你的小程序的微信公众平台https://mp.weixin.qq.com点击右上角的工具&#xff0c;进入后是下面的页面 然后用你输入的微信号微信浏览“饿了…

微信小程序实现展示图片(图片推广小程序可以使用)

实现效果图&#xff1a; 首先就是这个封面是一些图片展示界面&#xff0c;后台返回的都是图片。然后根据返回数据数组的下标进行分类&#xff0c;第一排只显示数组为1&#xff0c;4&#xff0c;7一次类推&#xff0c;第二列是2&#xff0c;5&#xff0c;8的index&#xff0c;第…