100但两个0分测试点没A求调玄关
  • 板块P1464 Function
  • 楼主zjck2
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/21 11:09
  • 上次更新2025/7/21 15:55:30
查看原帖
100但两个0分测试点没A求调玄关
1347790
zjck2楼主2025/7/21 11:09
#include <bits/stdc++.h>
using namespace std;
 
int memo[21][21][21];  // 0~20
 
// 递归函数定义 
int w(int a, int b, int c) {
    // 边界条件1:任一参数<=0,返回1 
    if (a <= 0 || b <= 0 || c <= 0)
        return 1;
 
    // 边界条件2:任一参数>20,返回w(20,20,20)
    if (a > 20 || b > 20 || c > 20)
        return w(20, 20, 20);
 
    // 如果已经计算过,直接返回缓存结果
    if (memo[a][b][c] != -1)
        return memo[a][b][c];
 
    // 条件判断 
    if (a < b && b < c)
        return memo[a][b][c] = w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c);
    else
        return memo[a][b][c] = w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1);
}
 
int main() {
    // 初始化memo为-1表示未计算
    memset(memo, -1, sizeof(memo));
 
    int a, b, c;
    while (cin >> a >> b >> c) {
        if (a == -1 && b == -1 && c == -1)
            break;
        cout << "w(" << a << ", " << b << ", " << c << ") = " << w(a, b, c) << endl;
    }
 
    return 0;
}
2025/7/21 11:09
加载中...