1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <bits/stdc++.h> #define ll long long using namespace std;
int k; int len[6]; ll dp[31][16][11][8][7];
ll dfs(int a,int b,int c,int d,int e) { if(a<0||b<0||c<0||d<0||e<0)return 0; ll &opt=dp[a][b][c][d][e]; if(opt)return opt; opt=dfs(a,b,c,d,e-1); if(d>e)opt+=dfs(a,b,c,d-1,e); if(c>d)opt+=dfs(a,b,c-1,d,e); if(b>c)opt+=dfs(a,b-1,c,d,e); if(a>b)opt+=dfs(a-1,b,c,d,e); return opt; }
int main() { while(scanf("%d",&k) && k) { memset(len,0,sizeof(len)); memset(dp,0,sizeof(dp)); dp[0][0][0][0][0]=1; for(int i=1; i<=k; i++) scanf("%d",len+i); printf("%lld\n",dfs(len[1],len[2],len[3],len[4],len[5])); } return 0; }
|