咳,跟我刚学OI一样,如果你的 `w(20,20,20)` 之前没有跑过咋么办,你直接返回有可能里面没有值。
代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int p[25][25][25];
int w(long long a,long long b,long long c){
if(a<=0||b<=0||c<=0) return 1;
else if(a>20||b>20||c>20) return w(20, 20, 20);
if(p[a][b][c]>0) return p[a][b][c];
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);
return p[a][b][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 d,e,f;
while(1){
cin>>d>>e>>f;
if(d==-1&&e==-1&&f==-1) break;
else cout<<"w("<<d<<", "<<e<<", "<<f<<") = "<<w(d,e,f)<<endl;}
return 0;
}
```
by O_v_O @ 2024-10-13 13:51:34
@[pengsiqi11](/user/1004121)
by O_v_O @ 2024-10-13 13:54:28
ohhhhhhhhhhhh!
想起来了想起来了想起来了
谢谢大佬!
by pengsiqi11 @ 2024-10-13 14:39:34