c++ 组合
组合
题目描述
已知一个一维数组a1..n,又已知一整数m。 如能使数组a中任意几个元素之和等于m,则输出YES,反之则为NO。
输入
输入包括两行,第一行包含两个整数n m(1<=n<20,1<=m<=1000000),第二行输入n个整数(每个数不会超过1000000)。
输出
如能使数组a中任意几个元素之和等于m,则输出YES,反之则为NO。
样例输入
6 5
2 3 1 4 2 1
样例输出
YES
提示
(None)
代码+注释
#include <bits/stdc++.h>
using namespace std;
int nums[101];
int n;	//数组元素个数
int m;	//数组中存在n个元素和为m
bool flag;
void sum(int n,int m)   //求数组中是否存在一些元素和等于m
{
	if(nums[n] == m) flag = true;  //假设数组的最后一个元素等于和m,将flag变量置为true
	else if(n == 1) return ;    //搜索完了整个数组返回
	else
	{
		sum(n - 1,m - nums[n]);   //说明取了nums[n]元素
		sum(n - 1,m);	//说明没有取nums[n]
	}
} 
int main()
{
	cin >> n;
	for(int i = 1;i <= n;i ++)
	{
		cin >> nums[i];
	}
	cin >> m;
	flag = false; //初始时,将flag置为false,当找到某些元素和为m的时候在sum函数中flag的值将改变
	sum(n,m);
	if(flag)
	cout << "Yes" << endl;
	else
	cout << "No" << endl;
	return 0;
}
												
											c++ 组合的更多相关文章
- 复杂的 Hash 函数组合有意义吗?
		
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
 - JS继承之借用构造函数继承和组合继承
		
根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...
 - ComponentPattern (组合模式)
		
import java.util.LinkedList; /** * 组合模式 * * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店 ...
 - 安卓自定义组合控件--toolbar
		
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
 - UML类图(下):关联、聚合、组合、依赖
		
前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...
 - 面向组合子设计Coder
		
面向组合子 面向组合子(Combanitor-Oriented),是最近帮我打开新世界大门的一种pattern.缘起haskell,又见monad与ParseC,终于ajoo前辈的几篇文章. 自去年9 ...
 - Atitit 动态按钮图片背景颜色与文字组合解决方案
		
Atitit 动态按钮图片背景颜色与文字组合解决方案 转换背景颜色,setFont("cywe_img", fontScale, 50, 5) 设置文字大小与坐标 文字分拆,使用字 ...
 - Android自定义控件之自定义组合控件
		
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
 - 设计模式(十一):从文Finder中认识"组合模式"(Composite Pattern)
		
上一篇博客中我们从从电影院中认识了"迭代器模式"(Iterator Pattern),今天我们就从文件系统中来认识一下“组合模式”(Composite Pattern).说到组合模 ...
 - 设计模式(十)组合模式(Composite Pattern)
		
一.引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象 ...
 
随机推荐
- 消息队列中点对点与发布订阅区别(good)
			
背景知识 JMS一个在 Java标准化组织(JCP)内开发的标准(代号JSR 914).2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1.1 ...
 - Httpclient Fluent API简单封装
			
import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List ...
 - [UWP-小白日记16]UWP中的3D变换API
			
原文:[UWP-小白日记16]UWP中的3D变换API 还没开始 好久没写博客了,再来开坑. 正文 Transform3D:“这个和CSS的3D好像的说” PerspectiveTransform3D ...
 - 图像滤镜艺术---Swirl滤镜
			
原文:图像滤镜艺术---Swirl滤镜 Swirl Filter Swirl 滤镜是实现图像围绕中心点(cenX,cenY)扭曲旋转的效果,效果图如下: 原图 效果图 代码如下: // ...
 - ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区
			
原文:ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区 1 软件安装 1.1 安装前准备 请确认已经收到来自Esri中国( ...
 - /\B(?=(?:\d{3})+$)/g 一条令人费解的正则表达式
			
网上浏览博客看到要用JavaScript正则表达式解决一个功能, 要在数字中间插入逗号, 用来表示书面的金额写法. JS代码是这样子的 let test1 = '1234567890' let for ...
 - DDD中的值对象如何用NHibernate进行映射
			
原文:DDD中的值对象如何用NHibernate进行映射 <component/>是NHibernate中一个有趣的特性,即是用来映射DDD(Data-Display-Debuger)概念 ...
 - UWP-消息提示(仿Android)
			
原文:UWP-消息提示(仿Android) 在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那 ...
 - How to Move SSL certificate from Apache to Tomcat
			
https://www.sslsupportdesk.com/how-to-move-ssl-certificate-from-apache-to-tomcat/ Apache uses x509 p ...
 - WIFI Manager
			
Vistumbler - wifi managerhttps://www.vistumbler.net/downloads.htmlhttps://github.com/RIEI