c++ 组合
2024-09-01 02:39:30
组合
题目描述
已知一个一维数组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;
}
最新文章
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
- js闭包原理
- discuz安装与学习资料
- Easyui主要组件用法
- Baxter机器人---测试准备(一)
- 【转】编写Chrome扩展程序
- Maven的pom.xml文件详解------Build Settings
- Asp.Net Core WebApi (Swagger+EF Core/Code First)
- js截图及绕过服务器图片保存至本地(html2canvas)
- [转帖]一段关于Unix与 Linux的暗黑史
- 配置远程jupyter notebook
- 创建React组件
- latex 转word
- python 在 Windows Server 2008 r2 上 安装失败
- python之路——网络基础
- 配置:heartbeat+nginx+mysqld+drbd高可用笔记(OK)
- 博客主题皮肤探索-GitHub和jsdelivr的使用
- 透彻掌握Promise的使用,读这篇就够了
- GitLab 安装与入门
- 【洛谷P1886】滑动窗口