sajdhkja @ 2022-01-29 16:26:21
#include<bits/stdc++.h>
#define int long long
using namespace std;const int inf=1e5+10;
#define endl '\n'
int memory[25][25][25];
struct node{
int a,b,c;
};
// unordered_map<node,int>q;
int w(node root)
{
// if(q.count(root))return q[root];
if(root.c<=0||root.b<=0||root.a<=0){return 1;}
if(root.c>20||root.b>20||root.a>20){root.c=20,root.b=20,root.a=20;}
if(memory[root.a][root.b][root.c])return memory[root.a][root.b][root.c];
if(root.a<root.b&&root.b<root.c){
memory[root.a][root.b][root.c]=w({root.a,root.b,root.c-1})+w({root.a,root.b-1,root.c-1})+w({root.a,root.b-1,root.c});
// q[root]=k;
return memory[root.a][root.b][root.c];
}
else{
memory[root.a][root.b][root.c]=w({root.a-1,root.b,root.c})+w({root.a-1,root.b-1,root.c})+w({root.a-1,root.b,root.c-1})-w({root.a-1,root.b-1,root.c-1});
// q[root]=k;
return memory[root.a][root.b][root.c];
}
}
signed main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
node root;
while (cin>>root.a>>root.b>>root.c,!(root.c==-1&&root.b==-1&&root.a==-1))
{
node copy=root;
int ans=w(root);
printf("w(%lld, %lld, %lld) = %lld\n",copy.a,copy.b,copy.c,ans);
}
return 0;
}
by StarLbright40 @ 2022-01-29 16:37:48
@sajdhkja 你是怎么敢关了流同步又用 printf 的啊
by sajdhkja @ 2022-01-29 18:49:24
@星光0000 啊,其实我也不太明白这个东西,之前我看别人说不要即用cout又用printf就可以