@[zhou1108__](/user/522135)
你改变了d, f, g的值。输出就出了问题。
有一组数据 `50 50 50`, 输出是`
w(50, 50, 50) = 1048576`, 你是`
w(21, 21, 21) = 1048576`。
建议加上如下代码
```
while(cin>>d>>f>>g){//yours
int dd, ff, gg;//new
dd = d;//new
ff = f;//new
gg = g;//new
if(d==-1&&f==-1&&g==-1)break;//yours
```
by DeusExMachina @ 2021-07-27 11:15:29
@[zhou1108__](/user/522135) 全部代码
你需要改一改。我用这个提交过了,您再提交可能会被反作弊。
```cpp
#include<bits/stdc++.h>
using namespace std;
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 (a > 20 || b > 20 || c > 20) return w(20, 20, 20);
else if (f[a][b][c] != 0) return f[a][b][c];
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 d,f,g;
while(cin>>d>>f>>g){
int dd, ff, gg;
dd = d;
ff = f;
gg = g;
if(d==-1&&f==-1&&g==-1)break;
if(d>20) d=21;
if(f>20) f=21;
if(g>20) g=21;
cout<<"w("<<dd<<", "<<ff<<", "<<gg<<") = "<<w(d,f,g)<<endl;
}
return 0;
}
```
by DeusExMachina @ 2021-07-27 11:17:14
@[TheRedKiller_](/user/361833) !谢谢(//*
(不过为什么要用您来称呼)
by 山迟暮 @ 2021-07-27 11:26:28
@[zhou1108__](/user/522135) 因为您强。
by DeusExMachina @ 2021-07-27 11:26:55
@[TheRedKiller_](/user/361833) (属实担不起。
by 山迟暮 @ 2021-07-27 11:55:52