为什么加上这段代码就能AC?不加就全RE?
查看原帖
为什么加上这段代码就能AC?不加就全RE?
421080
only_matthew楼主2021/7/6 13:02

这是我自己的代码

#include<cstdio>
#include<iostream>
#include<cstring>
long long f[25][25][25];
long long w(long long a,long long b,long long c)
{
    if(a<=0||b<=0||c<=0) 
        return 1;
    else if(f[a][b][c]!=0) 
        return f[a][b][c];
    else if(a>20||b>20||c>20) 
        f[a][b][c]=w(20,20,20);
    else if(a<b&&b<c) 
        f[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
    else 
        f[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);
    return 
        f[a][b][c];
}
int main()
{
    long long a,b,c;
    while(scanf("%lld%lld%lld",&a,&b,&c)){
        memset(f,0,sizeof(f));
        if(a==-1&&b==-1&&c==-1) 
            break;
        printf("w(%lld, %lld, %lld) = ",a,b,c);
        printf("%lld\n",w(a,b,c));
    }
}

看完题解后发现加上

if(a>20) 
	a=21;
if(b>20) 
	b=21;
if(c>20) 
	c=21;

就可以AC,死活想不通,求助!

2021/7/6 13:02
加载中...