组合

题目描述

已知一个一维数组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;
}

最新文章

  1. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
  2. js闭包原理
  3. discuz安装与学习资料
  4. Easyui主要组件用法
  5. Baxter机器人---测试准备(一)
  6. 【转】编写Chrome扩展程序
  7. Maven的pom.xml文件详解------Build Settings
  8. Asp.Net Core WebApi (Swagger+EF Core/Code First)
  9. js截图及绕过服务器图片保存至本地(html2canvas)
  10. [转帖]一段关于Unix与 Linux的暗黑史
  11. 配置远程jupyter notebook
  12. 创建React组件
  13. latex 转word
  14. python 在 Windows Server 2008 r2 上 安装失败
  15. python之路——网络基础
  16. 配置:heartbeat+nginx+mysqld+drbd高可用笔记(OK)
  17. 博客主题皮肤探索-GitHub和jsdelivr的使用
  18. 透彻掌握Promise的使用,读这篇就够了
  19. GitLab 安装与入门
  20. 【洛谷P1886】滑动窗口

热门文章

  1. LOCK_TIMEOUT
  2. C#管理服务停止启动
  3. Android零基础入门第68节:完善RecyclerView,添加首尾视图
  4. cairo 图形库
  5. HDFS的几点改进
  6. 屏蔽按CapsLock键切换到大写时,编辑框自动弹出的提示(UnregisterClass(TOOLTIPS_CLASS)后,重新设置WndProc并注意返回值)
  7. 自己动手写jQuery插件---Tip(提示框)
  8. java源码解析之String类(四)
  9. php中使用trait设计单例
  10. Java 位域