求助大佬!!!记忆化搜索为什么只有9分(已注释)
  • 板块P1164 小A点菜
  • 楼主kkkllj
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/31 19:22
  • 上次更新2023/11/2 10:31:24
查看原帖
求助大佬!!!记忆化搜索为什么只有9分(已注释)
871649
kkkllj楼主2023/10/31 19:22
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <queue>

using namespace std;

typedef long long LL;
int M, N;
// 存储菜品价格
int a[101];
// 记录pos位置 剩余M元的数据
LL d[101][10001];

LL f(int pos, int M)
{
    // 查看d数组是否储存数据
    if (d[pos][M] != 0)
        return d[pos][M];

    // 剩0元
    if (M == 0)
        return 1;
    // 下标超过了菜品数量
    if (pos >= N)
        return 0;
    // 用的钱超支了
    if (M < 0)
        return 0;

    // 存储pos处菜品 剩M元的情况  不选择当前菜的情况+选择当前菜的情况
    d[pos][M] = f(pos + 1, M) + f(pos + 1, M - a[pos]);
    return d[pos][M];
}

int main()
{
    cin >> M >> N;
    // 从0开始读入菜品价格
    for (int i = 0; i < N; i++)
    {
        cin >> a[i];
    }
    cout << f(0, M);

    return 0;
}
2023/10/31 19:22
加载中...