#include <bits/stdc++.h>
using namespace std;
# define LL long long
const int N = 25;
int f[N][N][N];
int w(LL a,LL b,LL c){
if(a <= 0 || b <= 0 || c <= 0) return 1;
if(a > 20 || b > 20 || c > 20) f[a][b][c] = w(20,20,20);
if(f[a][b][c]) return 0;
else if(a < b && b < c) f[a][b][c] = w(a,b,c-1)+w(a,b-1,c-1)-(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(){
LL a,b,c;
while(cin >> a >> b >> c){
if(a == -1 && b == -1 && c == -1){
return 0;
}else{
cout << "w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c);
}
}
}
样例过了
为啥RE!!!!
求救!