一个疑问
  • 板块P1464 Function
  • 楼主fyvdnz
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/4/6 17:31
  • 上次更新2023/10/23 19:15:56
查看原帖
一个疑问
536943
fyvdnz楼主2023/4/6 17:31
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

long long n,m;
long long p[25][25][25]={0};

long long t(long long a,long long b,long long c){
    cout << "w(" << a << ", " << b << ", " << c << ") = ";
}
long long prin(){
    cout  << n << endl;
}

long long w(long long a,long long b,long long c){
    if(a<=0||b<=0||c<=0)
        p[a][b][c]=1;
    else if(p[a][b][c]!=0) 
        return p[a][b][c];
    else if(a>20||b>20||c>20)
        p[a][b][c]=w(20,20,20);
    else if(a<b&&b<c)
        p[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
    else 
        p[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 p[a][b][c];
}

int main(){
    long long x,y,z;
    while(scanf("%lld%lld%lld",&x,&y,&z)==3){
        if(x==(-1)&&y==(-1)&&z==(-1))
            break;
        t(x,y,z);
        if(x>20)x=21;
        if(y>20)y=21;
        if(z>20)z=21;
        if(x<-1) x=-1;
        if(y<-1) y=-1;
        if(z<-1) z=-1;
        n=w(x,y,z);
        prin();
    }
    return 0;
}

在遇到(-1 x x) 这种以-1开头的会运行错误,将if(a<=0||b<=0||c<=0) p[a][b][c]=1; 改为 将if(a<=0||b<=0||c<=0) return 1; 就可以正常执行,但是我不理解是为什么。

2023/4/6 17:31
加载中...