蒟蒻爆0,但蒟蒻没看出来哪里错了(泪)

P1464 Function

ganClea @ 2022-06-23 15:21:30

蒟蒻的错误代码如下

#include <cstdio>
#include <bits/stdc++.h>
#include <iostream>

using namespace std;

long long mem[22][22][22];//蒟蒻想用记忆化搜索

long long f(long long a, long long b, long long c)//这就是那个函数
{
    if(a < 0 || b < 0 || c < 0)
        return 1;//第一个条件
    else if(mem[a][b][c])//把之前算过的调用出来
        return mem[a][b][c];
    else if(a > 20 && b > 20 && c > 20)//都是按部就班地弄
        mem[a][b][c] = f(20, 20, 20);
    else if(a < b && b < c)
        mem[a][b][c]=f(a,b,c-1)+f(a,b-1,c-1)-f(a,b-1,c);
    else
        mem[a][b][c]=f(a-1,b,c)+f(a-1,b-1,c)+f(a-1,b,c-1)-f(a-1,b-1,c-1);
    return mem[a][b][c];
}

int main()
{
    long long a, b, c;
    cin >> a >> b >> c;//获取abc
    while(a != -1 && b != -1 && c != -1)//判断何时退出
    {
        memset(mem, 0, sizeof(mem));//用一次清一次
        cout << "w(" << a << b << c <<")=";
        if(a > 20) a = 21;//为了适配全局数组
        if(b > 20) b = 21;
        if(c > 20) c = 21;
        long long ans = f(a, b, c);
        cout << ans << "\n";//打印答案
        cin >> a >> b >> c;//再次获取
    }
    return 0;
}

蒟蒻真心没看出来哪里错了 非常感谢大佬能来帮忙,ORZ,大写的○| ̄|_


by 编码落寞 @ 2022-06-23 16:57:26

@ganClea

1.输出格式有问题。 2.你的判断条件有误

  if(a < 0 || b < 0 || c < 0)

<=

  else if(a > 20 && b > 20 && c > 20)

&&-->||


by ganClea @ 2022-06-24 19:42:49

@编码落寞 感谢大佬!


|