ShenRuochen @ 2022-02-05 18:29:16
洛谷在线IDE和Dev-C++测试样例都AC,测试数据全部RE,已经调了1小时了。 代码
#include <bits/stdc++.h>
using namespace std;
long long res[21][21][21];
long long w(long long x,long long y,long long z)
{
if(x<=0||y<=0||z<=0)return 1;
else if(res[x][y][z]!=0)return res[x][y][z];
else if(x>20||y>20||z>20)res[x][y][z]=w(20,20,20);
else if(x<y&&y<z)res[x][y][z]=w(x,y,z-1)+w(x,y-1,z-1)-w(x,y-1,z);
else res[x][y][z]=w(x-1,y,z)+w(x-1,y-1,z)+w(x-1,y,z-1)-w(x-1,y-1,z-1);
return res[x][y][z];
}
int main()
{
long long a,b,c;
while(scanf("%lld%lld%lld",&a,&b,&c)==3)
{
memset(res,0,sizeof(res));
if(a==-1&&b==-1&&c==-1)return 0;
else
{
printf("w(%lld, %lld, %lld) = ",a,b,c);
if(a>20)a=21;
if(b>20)b=21;
if(c>20)c=21;
printf("%lld\n",w(a,b,c));
}
}
return 0;
}
by j1ANGFeng @ 2022-02-05 18:36:13
@Canny
数组小了
建议以后数组比范围大几百
by j1ANGFeng @ 2022-02-05 18:37:14
@Canny
res[21][21][21]
->
res[201][201][201]
by xfrvq @ 2022-02-05 18:43:35
@Canny w 函数内部要先判小于等于0或者大于20,再去判res[x][y][z]。
不然当x,y,z大于20的时候访问res[x][y][z]就会 RE
这不是数组大小的问题吧
by j1ANGFeng @ 2022-02-05 19:01:58
个人马蜂数组能开多大开多大直接干到1e8
by lym12321 @ 2022-02-05 19:52:54
@jiangzimin6 小心 MLE