子集和数问题

简介:   子集和数问题是假定有n个不同的正数(通常称为权),要求找出这些数中所有使得某和数为M的组合。 子集和数问题的递归回溯算法,代码如下: void SumOfSub(s,k,r) { //找w(1:n)中和数为M的所有子集。

  子集和数问题是假定有n个不同的正数(通常称为权),要求找出这些数中所有使得某和数为M的组合。

子集和数问题的递归回溯算法,代码如下:

void SumOfSub(s,k,r) {
//找w(1:n)中和数为M的所有子集。进入此过程时x(1),…,X(k-1)的值已确定。
k-1 n
//s=ΣW(i)X(i)且r=ΣW(j)。W(j)按非递减排列。假定w(1)≤M,ΣW(i)≥M
j=1 j=k
l int M,n;float W[n];bool X[n]; //M、W[n]、X[n]定义成全局变量
2 float r,s;int k,j;
//生成左子结点。注意,由于Bk-1=true,因此s + w[k]≤M
3 X[k]=14 if(s+w[k]==M) { //子集找到
5 print(X[j],j=1 to k);}
//由于W(j)>0,1≤j≤k,所以不存在递归调用
6 else
7 if(s+W[k]+W[k+1]<=M) { //Bk=true
8 SumOfSub(s+W[k],k+1,r-W[k]);}
9 //endif
10 //endif
//生成右孩子和计算 Bk的值 //
11 if((s+r-W[k]>=M) and (s+w(k+1)<=M)) { //Bk=true
12 X[k]=013 SumOfSub(s,k+l,r-W[k]);
14 };//if
15}//SumOfSub
  1. #include <stdio.h>  
  2. int M,n;  
  3. int w[100];  
  4. int x[100];  
  5. void SumOfSub(int s, int k, int r)  
  6. {  
  7.      //s=w[1]*x[1]+...+w[k-1]*x[k-1]  
  8.      //r=w[k]+...w[n]   
  9.      //w[i]需要按非降次序排列   
  10.     int i;  
  11.     x[k]=1;  
  12.     for(i=1; i<=k; i++)  
  13.        printf("%d", x[i]);  
  14.     printf("/n");  
  15.     if(s+w[k]==M) //子集找到  
  16.     {  
  17.         printf("ans:");  
  18.         for(i=1; i<=k; i++)  
  19.             printf("%d", x[i]);  
  20.         printf("/n");  
  21.     }else if(s+w[k]+w[k+1]<=M)  
  22.         SumOfSub(s+w[k], k+1, r-w[k]);  
  23.       
  24.     if(s+r-w[k]>=M && s+w[k+1]<=M)  
  25.     {  
  26.         x[k]=0;  
  27.         SumOfSub(s, k+1, r-w[k]);  
  28.     }  
  29. }   
  30. int main()  
  31. {  
  32.     int s,k,r;  
  33.     n=4;  
  34.     w[1]=7;  
  35.     w[2]=11;  
  36.     w[3]=13;  
  37.     w[4]=24;  
  38.     M=31;  
  39.       
  40.     s=0;  
  41.     k=1;  
  42.     r=55;  
  43.       
  44.     SumOfSub(s, k, r);  
  45.     getchar();  
  46.     return 0;  
  47. }  
相关文章
|
测试技术 API 开发工具
在Python中实现安卓手机自动化
在Python中实现安卓手机自动化
1535 0
|
7月前
|
数据采集 JSON API
唯品会商品列表数据接口指南(唯品会 API 系列)
唯品会商品列表数据接口助力电商数据采集与分析,支持按类别、价格、品牌等条件筛选商品。通过HTTP GET/POST请求,开发者可获取商品基本信息、价格、品牌及销量等数据,适用于业务拓展和竞品研究。Python示例代码展示了如何使用`requests`库调用该接口,设置参数并处理响应。
|
7月前
|
NoSQL MongoDB 数据库
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
1128 2
|
11月前
|
关系型数据库 数据库 PostgreSQL
深入理解 PostgreSQL 的 JOIN 连接
深入理解 PostgreSQL 的 JOIN 连接
497 4
|
关系型数据库 MySQL
navicat报错1045 - Access denied foruser ‘root‘@‘localhost‘(using password:YES)解决方法
navicat报错1045 - Access denied foruser ‘root‘@‘localhost‘(using password:YES)解决方法
546 0
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
|
机器学习/深度学习 人工智能 算法
神经网络算法——损失函数(Loss Function)
神经网络算法——损失函数(Loss Function)
1619 0
|
存储 编解码 弹性计算
租用2核4G、4核8G、8核16G配置阿里云服务器可选实例规格及价格参考
在租用阿里云服务器时,一般计算型实例规格的云服务器处理器与内存配比为1:2,而2核4G、4核8G、8核16G配置就是用户选择较多的配置,这些配置的云服务器一般可用于网站应用、批量计算、视频编码等各种类型和规模的企业级应用,目前在阿里云的活动中经济型e、通用算力型u1、计算型c7、计算型c8y、计算型c7a等实例2核4G、4核8G、8核16G配置有优惠,本文为大家介绍这些配置在阿里云目前的活动中可选的实例规格及具体价格和收费标准情况,以供参考。
租用2核4G、4核8G、8核16G配置阿里云服务器可选实例规格及价格参考
|
缓存 运维 负载均衡
什么才是真正的架构设计?架构君给你解释的一清二楚。
什么才是真正的架构设计?架构君给你解释的一清二楚。
976 1
什么才是真正的架构设计?架构君给你解释的一清二楚。
|
JavaScript 数据可视化 UED
用Vue搭建一个大屏数据可视化页面实战二(Vue实战系列)
用Vue搭建一个大屏数据可视化页面实战二(Vue实战系列)
667 4