AcWing 278.数字组合

首先就是可以给出DFS的思路,也就是指数型递归的操作:

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<numeric>
#include<map>
#include<limits.h>
#include<set>
#define int long long
#define MAX 100
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
using PII=pair<int, int>;
int n, m;
int counts;
int w[MAX];
int st[MAX];
void dfs(int u, int sum) {if (sum > m)return;if (u > n) {if (sum == m)counts++;return;}if (sum + w[u] > m)dfs(u + 1, sum);else{st[u] = 1;dfs(u + 1, sum + w[u]);st[0];st[u] = 2;dfs(u + 1, sum);st[u] = 0;}}
signed main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> w[i];}dfs(1, 0);cout << counts;return 0;
}

当然,时间是超时的。

接下来就是对于此的DP优化。

对于这个问题也就是说是一个01背包问题的方案数是求解,此时我们的f数组的含义也就变了,也就是从最大利用价值变成了能够得出目标数的方案数这个含义。

数组由于过了万,所以不能用二维数组进行求解,只能对于二维数组优化空间为一维数组。

上代码:

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<numeric>
#include<map>
#include<limits.h>
#include<set>
#define int long long
#define MAX 10005
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
using PII=pair<int, int>;
int n, m;
int counts;
int w[MAX];
int f[MAX];
signed main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> w[i];}f[0] = 1;for (int i = 1; i <= n; i++) {for (int j = m; j >= 0; j--) {if (j < w[i])f[j] = f[j];elsef[j] = f[j] + f[j - w[i]];}}cout << f[m];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORA-02270-此列列表的唯关键字或主键不匹配

学习场景 数据库约束学习 -- 主表 班级表 create table classinfo(cid number(4), -- 班级编号cname varchar2(100), -- 班级名称cyear number(4), -- 入学年份clen number(1) -- 学制 );-- 从表 学生表 create table stuInfo(stuNo number(10) primary key, cid number(4)…

Linux/Uinx 系统编程:定时器以及时钟同步

本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于Intel x86 的PC中的硬件定时器;讲解了CPU操作和中断处理;描述了Linux中与定时器相关的系统调用、库函数和定时器服务命令;探讨了进程间隔定时器、定时器生成的信号&#xff0c;并通过示例演示了进程间隔定时器。编程…

C语言经典算法-6

文章目录 其他经典例题跳转链接31.数字拆解32.得分排行33.选择、插入、气泡排序34.Shell 排序法 - 改良的插入排序35.Shaker 排序法 - 改良的气泡排序 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&…

《C语言深度剖析》---------关键字(1)

1.双击实质--->加载内存 windows系统里面&#xff0c;双击的本质就是运行程序&#xff0c;把程序加载到内存里面&#xff1b; 任何程序运行的时候都必须加载到内存里面&#xff1b; 程序没有运行之前在硬盘里面&#xff0c;为什么程序运行之前必须加载到内存里面呢&#…

【Apache ShenYu源码】如何实现负载均衡模块设计

ShenYu是一个异步的&#xff0c;高性能的&#xff0c;跨语言的&#xff0c;响应式的 API 网关。有关ShenYu的介绍可以戳这。 一、前瞻 今天我们尝试不同的代码阅读方式&#xff0c;按模块来去阅读源码&#xff0c;看看效果如何。 本次阅读锁定在shenyu-loadbalancer&#xf…

比较基因组——还是看我的教程吧!

一、运行orthofinder 首先 orthofinder使用的版本为2.5.* 不要使用2.2的&#xff0c;2.2默认比对是blast&#xff0c;速度非常慢&#xff0c;结果文件呈现形式也不让人满意。2.5默认用的diamond 速度非常快 第一步代码&#xff1a; nohup orthofinder -t 40 -f data/ & # …

android 的 hal-jni

目标是写一个APP调用HAL的一个函数,在AOSP源码环境下进行开发,大概流程是: APP---->Framework service---->native----->HAL 1.什么是HAL HAL全称Hardware Abstract Layer,硬件抽象层,它向下屏蔽了硬件的实现细节,向上提供了抽象接口,HAL是底层硬件和上层框架…

【网页实战项目设计】基于SSM的医院预约挂号系统

基于SSM的医院预约挂号系统 项目截图 开发环境与技术框架 开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&a…

实战whisper第二天:直播语音转字幕(全部代码和详细部署步骤)

直播语音实时转字幕&#xff1a; 基于Whisper的实时直播语音转录或翻译是一项使用OpenAI的Whisper模型实现的技术&#xff0c;它能够实时将直播中的语音内容转录成文本&#xff0c;甚至翻译成另一种语言。这一过程大致分为三个步骤&#xff1a;捕获直播音频流、语音识别&#x…

面试算法-70-合并 K 个升序链表

题目 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#xff1a;[1,1,2,3,4,4,5,6] 解释&#xff1a;链表数组如下…

深入了解RSA算法:公钥密码学的基石

RSA算法是一种非对称加密算法&#xff0c;由Ron Rivest、Adi Shamir和Leonard Adleman于1978年提出。它基于大数分解的困难性&#xff0c;使用一对公钥和私钥进行加密和解密。本文将详细介绍RSA算法的原理、实现以及应用场景。 一、RSA算法原理 大数分解问题 RSA算法的基础是…

在线教育话术(1W字精选)

产品结构图 Nginx实现代理 问&#xff1a;我们在本机的host文件中配置了域名映射&#xff0c;都是同一个服务器。我们只需要输入对应的域名就可以到对应的界面&#xff0c;这是怎么实现的&#xff1f; 答&#xff1a;主要就是通过Nginx反向代理来实现的&#xff0c;Nginx会先…

低代码开发与物联网应用:重塑未来技术生态

随着科技的飞速发展&#xff0c;物联网(IoT)正逐渐成为我们日常生活的重要组成部分。在这个大背景下&#xff0c;低代码开发平台的出现为物联网应用的开发带来了革命性的变化。本文旨在探讨低代码开发与物联网应用之间的关系&#xff0c;分析低代码开发如何推动物联网应用的快速…

Java学习笔记之Java基础语法02-运算符

1.运算符和表达式 1.1 运算符&#xff1a; 定义&#xff1a;就是对常量&#xff08;字面量&#xff09;或者变量进行操作的符号。 比如&#xff1a; - * / 1.2 表达式&#xff1a; 定义&#xff1a;用运算符把常量或者变量连接起来的&#xff0c;符合Java语法的式子就是表达…

2024-03-20 作业

作业要求&#xff1a; 1> 创建一个工人信息库&#xff0c;包含工号&#xff08;主键&#xff09;、姓名、年龄、薪资。 2> 添加三条工人信息&#xff08;可以完整信息&#xff0c;也可以非完整信息&#xff09; 3> 修改某一个工人的薪资&#xff08;确定的一个&#x…

电影aac是什么意思?如何播放、转换、编辑aac?

"电影AAC"这个术语可能是指电影中的音频编码格式。AAC&#xff08;Advanced Audio Coding&#xff09;是一种常见的音频编码格式&#xff0c;通常用于压缩音频文件&#xff0c;以在保持高质量的同时减小文件大小。在电影中&#xff0c;AAC格式的音频通常用于提供高质…

Java学习笔记NO.25

T2.编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。要求&#xff1a; (1)定义乐器类Instrument&#xff0c;包括方法makeSound() (2)定义乐器类的子类&#xff1a;二胡Erhu、钢琴Piano和小提琴Violin (3)定义乐手类…

H12-811题库(带解析,亲测高分可以通过)

大家可以直接点赞关注后&#xff0c;加作者微信&#xff08;备注“CSDN”&#xff09;就可以获取&#xff0c;微信在文章最后&#xff01; 808、[单选题]某公司网管要进行网络规划的时候&#xff0c;能够要让PC1访问PC2的数据包从G0/0/0口走(图上G0/0/2)。PC2访问PC1的数据包从…

抗辐射相机行业深度分析及投资机会探讨

一、市场趋势 抗辐射相机作为特种设备&#xff0c;主要用于军事侦察、核工业检测、太空探索等高辐射环境下的成像需求。随着全球核能和太空探索活动的增加&#xff0c;对高性能抗辐射相机的需求呈现上升趋势。此外&#xff0c;国家安全防护级别的提升也为该行业带来了新的增长…

浅谈RPC的理解

浅谈RPC的理解 前言RPC体系Dubbo架构最后 前言 本文中部分知识涉及Dubbo&#xff0c;需要对Dubbo有一定的理解&#xff0c;且对源码有一定了解 如果不了解&#xff0c;可以参考学习我之前的文章&#xff1a; 浅谈Spring整合Dubbo源码&#xff08;Service和Reference注解部分&am…