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
@编码落寞 感谢大佬!