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

蓝桥云客 2022

02022 - 蓝桥云课

2022

问题描述
---------
将2022拆分成10个互不相同的正整数之和,总共有多少种拆分方法?
注意交换顺序视为同一种方法,例如2022 = 1000 + 1022 和 2022 = 1022 + 1000 就视为同一种方法。

答案提交
---------
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

运行限制
---------
- 最大运行时间:1s
- 最大运行内存:512M

总通过次数:4542 | 总提交次数:5214 | 通过率:87.1%

难度:中等 标签:2022,国赛,背包问题

版权声明
---------

思路:
背包问题

记忆化搜索:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; 
// 记忆化数组:memo[i][j][k]表示前i个数中选j个数,和为k的方案數
ll memo[2022 + 1][10 + 1][2022 + 1];

ll dfs(ll i, ll j, ll k) 
{
    // 边界条件处理
    if (j < 0 || k < 0) 
	return 0;          // 非法状态
    if (j == 0 && k == 0) 
	return 1;  // 恰好选够且和为0(合法方案)
    if (i == 0) 
	return 0;  // 没有数可选但未满足条件
    if (memo[i][j][k] != -1) 
	return memo[i][j][k];
    
    ll res = 0;
    
    res = dfs(i - 1, j, k); // 不选第i个数的情况
    
    // 选第i个数的情况(需满足k >= i且j至少选1個)
    if (k >= i && j >= 1) 
	{
        res = dfs(i - 1, j, k) + dfs(i - 1, j - 1, k - i);
    }
    return memo[i][j][k] = res;
}

int main() 
{
    memset(memo, -1, sizeof(memo));
    cout << dfs(2022, 10, 2022);
    return 0;
}

dp:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[2023][11][2023]; 
int main()
{
    for (ll i = 0; i <= 2022; i++)  //因为体积为0,物品为0的所有情况都只有一种选择,即什么都不选
    f[i][0][0] = 1;
    
    for (ll i= 1; i <= 2022; i++)  //枚举所有物品
    {
        for (ll j = 1; j <= 10; j++)   //选了几个物品
        {
            for (ll k = 1; k <= 2022; k++)  //枚举体积
            {
             	   if (k >= i && j >= 1)  //选第i个物品
                   f[i][j][k] += f[i-1][j - 1][k - i] + f[i-1][j][k];
                   else
                   f[i][j][k] = f[i-1][j][k];  //不选第i个物品
            }
        }
    }
    cout << f[2022][10][2022];
    return 0;
}

相关文章:

  • 坚持的力量与智慧策略
  • cv2.fillPoly()和cv2.polylines()
  • 【分布式】Hystrix 的核心概念与工作原理​
  • Java的设计模式详解
  • 【数论4】求解线性同余方程和方程组
  • FPGA | 等精度测频应用与实践
  • RSTP --- 快速生成树
  • 如何成功点亮LED灯并实现闪烁效果
  • ROS软路由多wifi多IP搭建一览表
  • 红黑树剖析
  • DirectX修复工具免费版下载安装教程(附安装包)
  • 蓝桥杯 XYZ
  • elementui中el-form自定义表单校验规则
  • Java后端开发(十八)-- 使用JAXB,将JavaBean转换XML文本
  • 基础知识专题整理-----持续更新
  • lib-zo,C语言另一个协程库,整理
  • leetcode0704. 二分查找-easy
  • 关于labview中路径的问题
  • 一款功能强大的手机使用情况监控工具
  • 探访 DINO 家族 Part 4:融合多模态大语言模型的视觉模型基础 RexSeek
  • 怎么做网站链接广告/大连百度seo
  • wordpress shop/唐山seo排名外包
  • 新公司网站建设费用怎么入账/百度如何推广产品
  • 做剧情游戏的网站/百度网站排名搜行者seo
  • 网站项目开发的流程/西安分类信息seo公司
  • 有服务器可以做网站吗/南京怎样优化关键词排名