当前位置: 首页 > news >正文

子集和问题---递归搜索

题目描述:

给定n个不同的正整数集合w=(w1,w2,…,wn)和一个正数W,要求找出w的子集s,使该子集中所有元素的和为W。

输入格式:

第一行输入n和W,第二行依次输入n个数。

输出格式:

每行输出一个符合要求的子集。

输入样例1:

4 31
11 13 24 7

输出样例1:

11 13 7 
24 7 

代码如下: 

 这题跟我前面写的这题差不多的:递归实现指数型枚举------DFS-CSDN博客

#include <bits/stdc++.h>
using namespace std;
int n,w;
int st[10];//标志数组,0表示未确定。1表示选,2表示不选
int a[100];//存储结果集
int sum=0;//集合中所有元素和void dfs(int k)
{if(k>n){if(sum==w){for(int i=1;i<=n;i++)if(st[i]==1)cout<<a[i]<<" ";cout<<endl;}return ;//要在这里return; }//先选 if(st[k]==0){st[k]=1;sum=sum+a[k];k++;dfs(k);}//回溯 k--;sum=sum-a[k];st[k]=0;//不选	if(st[k]==0){st[k]=2;k++;dfs(k);}	//回溯k--;st[k]=0; } 
int main() 
{cin>>n>>w;for(int i=1;i<=n;i++)cin>>a[i];dfs(1); return 0;
}

希望能帮助到各位同志,谢谢!

 


http://www.mrgr.cn/news/95448.html

相关文章:

  • Resume全栈项目(.NET)
  • 【第22节】windows网络编程模型(WSAAsyncSelect模型)
  • 计划变动的坐标系-基线
  • 众乐影音-安卓NAS-Player的安装和设置说明
  • 蓝桥杯 之 第27场月赛总结
  • vim的一般操作(分屏操作) 和 Makefile 和 gdb
  • 浔川社团官方联合会维权成功
  • 【LeetCode 热题100】 22. 括号生成 的算法思路及python代码
  • 深入了解Spring事务及其使用场景
  • C++Primer学习(13.2 拷贝控制和资源管理)
  • PostgreSQL:数据类型与运算符
  • 单表达式倒计时工具:datetime的极度优雅(智普清言)
  • Linux操作系统7- 线程同步与互斥4(基于POSIX条件变量的生产者消费者模型)
  • 第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器
  • 基于大模型的甲状舌管囊肿全流程预测与临床方案研究报告
  • 2025海外华文新媒体高级人才研修班在广西南宁举办
  • 代码随想录算法训练营第十四天(2)|151.翻转字符串里的单词
  • WSL 导入完整系统包教程
  • 使用brower use AI 代理自动控制浏览器完成任务
  • 【Java篇】静动交融,内外有别:从静态方法到内部类的深度解析