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

【数字组合】

题目


在这里插入图片描述



思路


状态表示: f [ i ] [ j ] f[i][j] f[i][j] 对应考虑1到 i 号数字,和为 j 的方法,表示方法数
目标表示: f [ n ] [ m ] f[n][m] f[n][m]
状态转移: f [ i ] [ j ] = f [ i − 1 ] [ j ] + f [ i − 1 ] [ j − a [ i ] ] f[i][j] = f[i-1][j] + f[i-1][j-a[i]] f[i][j]=f[i1][j]+f[i1][ja[i]] 即选和不选
初始化: f [ i ] [ 0 ] = 1 f[i][0] = 1 f[i][0]=1 表示一种方法,注意这里的 i ∈ [ 0 , n ] i \in [0,n] i[0,n]
优化: 见代码



代码


#include <bits/stdc++.h>
using namespace std;
int f[110][10010];
int main()
{
    int n, m;
    cin >> n >> m;
    f[0][0] = 1;
    for(int i = 1; i <= n; i++)
    {
        f[i][0] = 1;
        int a;
        cin >> a;
        for(int j = 1; j <= m; j++)
        {
            f[i][j] = f[i-1][j];
            if(j >= a) f[i][j] += f[i-1][j-a];
        }
    }
    
    cout << f[n][m];
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int f[10010];
int main()
{
    int n, m;
    cin >> n >> m;
    
    f[0] = 1;
    for(int i = 1; i <= n; i++)
    {
        int a;
        cin >> a;
        for(int j = m; j >= a; j--)
        {
            f[j] += f[j-a];
        }
    }
    
    cout << f[m];
    return 0;
}

http://www.kler.cn/a/316450.html

相关文章:

  • 卓胜微嵌入式面试题及参考答案(2万字长文)
  • K8资源之endpoint资源EP资源
  • 物理设备命名规则(Linux网络服务器 15)
  • Unity3D 包体裁剪与优化详解
  • 【学习笔记】数据结构(七)
  • STM32 GPIO 配置
  • C基础语法2
  • 提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案
  • 【C语言零基础入门篇 - 16】:栈和队列
  • 新一代图像生成E2E FT:深度图微调突破
  • iOS界面布局:屏幕尺寸与安全区域全面指南
  • 什么是unix中的fork函数?
  • 【RabbitMQ】快速上手
  • Spring Boot 2.x基础教程:实现文件上传
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第五集:再制作更多的敌人
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • 经典sql题(七)查找直播间最大在线人数
  • HDL coder使用手册
  • 【产品思考】低代码理解与国内落地
  • 【python】数据爬虫,抓取并分析豆瓣电影信息
  • 1网络安全的基本概念
  • 【Nginx】Nginx 监控详解
  • git学习【完结】
  • 【安当产品应用案例100集】017-助力软件服务商高效集成多因素认证
  • python -- assert函数
  • stm32单片机个人学习笔记7(TIM定时中断)