Tansy20211206 @ 2023-07-11 16:45:23
#include<bits/stdc++.h>
using namespace std;
long long t[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);
else if(w[a][b][c])return t[a][b][c];
else if(a<b<c)return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
else t[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 t[a][b][c];
}
int main()
{
long long x,y,z;
while(1)
{
cin>>x>>y>>z;
if(x==-1&&y==-1&&z==-1)break;
cout<<"w("<<x<<", "<<y<<", "<<z<<") = "<<w(x,y,z)<<endl;
}
return 0;
}
悬赏一个关注
by hexuchen @ 2023-07-11 16:52:45
这道题具体咋做,蒟蒻的我不知道......但这道题不能照题目一步步写上去,好像要优化
by _8247 @ 2023-07-11 17:29:18
第八行
if(w[a][b][c])
改成
if(t[a][b][c])
第九行
if(a<b<c)
改成
if(a<b&&b<c)
by _8247 @ 2023-07-11 17:40:31
第九行整行改成
else if(a<b&&b<c) t[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
by Tansy20211206 @ 2023-07-11 21:15:19
@hexuchen & killed_TLE
感谢! (已关注)