我个人觉得自己理解了题解,但是这个代码怎么调都是 Subtack 1 两个点全 TLE ,剩下全对
#include<bits/stdc++.h>
using namespace std;
int ans[25][25][25];
int w(long long a,long long b,long long c);
int find(long long a,long long b,long long c){
if(ans[a][b][c]==0){
ans[a][b][c]=w(a,b,c);
}
return ans[a][b][c];
}
int w(long long a,long long b,long long c){
if(a<=0 or b<=0 or c<=0){
return 1;
}
if(a>20 or b>20 or c>20){
if(ans[20][20][20]!=0){
return ans[20][20][20];
}else{
return w(20,20,20);
}
}
if(a<b and b<c){
ans[a][b][c]=find(a,b,c-1)+find(a,b-1,c-1)-find(a,b-1,c);
return ans[a][b][c];
}
ans[a][b][c]=find(a-1,b,c)+find(a-1,b-1,c)+find(a-1,b,c-1)-find(a-1,b-1,c-1);
return ans[a][b][c];
}
int main(){
while(1){
int a,b,c;
cin>>a>>b>>c;
if(a==-1 and b==-1 and c==-1) return 0;
cout<<"w("<<a<<", "<<b<<", "<<c<<')'<<" = "<<w(a,b,c)<<endl;
}
}