具体b站:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll N=32; ll dp[N][N][N][N][N]; int s[7]; int main() { int k; while(cin>>k,k) { memset(s,0,sizeof s); memset(dp,0,sizeof dp); for(int i=1;i<=k;i++) scanf("%d",&s[i]); dp[0][0][0][0][0]=1; for(int a=0;a<=s[1];a++) for(int b=0;b<=min(s[2],a);b++) for(int c=0;c<=min(s[3],b);c++) for(int d=0;d<=min(s[4],c);d++) for(int e=0;e<=min(s[5],d);e++) { if(a) dp[a][b][c][d][e]+=dp[a-1][b][c][d][e]; if(a) dp[a][b][c][d][e]+=dp[a][b-1][c][d][e]; if(a) dp[a][b][c][d][e]+=dp[a][b][c-1][d][e]; if(a) dp[a][b][c][d][e]+=dp[a][b][c][d-1][e]; if(a) dp[a][b][c][d][e]+=dp[a][b][c][d][e-1]; } printf("%lld\n",dp[s[1]][s[2]][s[3]][s[4]][s[5]]); } return 0; }