Crushxl37 2024-05-10 14:32 采纳率: 0%
浏览 6
已结题

算法题:数的划分,用记忆化DFS做WA求调

题意简述

把数n划分成k个互不相同的正整数,不同顺序方案算同一种,求总共的方案数量。

代码

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2022;
const int MAXK = 10;
long long f[MAXN+5][MAXK+5];

long long dfs(int n,int k,int last){    //n:累加的数,k:划分次数,last:上次划分出的数 
    if(k == MAXK) return n==MAXN?1:0;
    if(f[n][k] != -1) return f[n][k];
    long long sum = 0;
    for(int i=last;n+i<=MAXN;i++){
        sum += dfs(n+i,k+1,i+1);
    }
    f[n][k] = sum;
    return sum;
}

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

上面代码输出的答案少了,求调,要用记忆化的DFS,感谢!!

  • 写回答

15条回答 默认 最新

  • 专家-皆知 2024-05-10 14:32
    关注

    使用动态规划,记录已计算过的子问题结果。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月11日
  • 修改了问题 5月10日
  • 创建了问题 5月10日

悬赏问题

  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题