1 条题解
- 
  1
记忆化递归。
#include<bits/stdc++.h> using namespace std; long long qp[25][25][25]; long long w(int a,int b,int c) { if(a<=0||b<=0||c<=0)return 1; if(a>20||b>20||c>20) { if(qp[20][20][20])return qp[20][20][20]; return qp[20][20][20]=w(20,20,20); } if(a<b&&b<c) { if(qp[a][b][c])return qp[a][b][c]; return qp[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } if(qp[a][b][c])return qp[a][b][c]; return qp[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); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); long long a,b,c; cin>>a>>b>>c; cout<<w(a,b,c); // while(cin>>a>>b>>c) // { // if(a==-1&&b==-1&&c==-1)break; // printf("w(%lld, %lld, %lld)= %lld\n",a,b,c,w(a,b,c)); // } return 0; } 
- 1
 
信息
- ID
 - 2634
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 8
 - 标签
 - (无)
 - 递交数
 - 16
 - 已通过
 - 8
 - 上传者