271. 杨老师的照相排列
Posted morrowwind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了271. 杨老师的照相排列相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[32][32][32][32][32],n,k[5]; //枚举最后一个编号最大的同学的位置,DP代表着abcde及这么多个人的总数,那么a-1bcde的总数也可求得 ll DP(int a,int b,int c,int d,int e){ if(dp[a][b][c][d][e]!=0) return dp[a][b][c][d][e]; ll s=0; if(a>0&&a>b) s+=DP(a-1,b,c,d,e); if(b>0&&b>c) s+=DP(a,b-1,c,d,e); if(c>0&&c>d) s+=DP(a,b,c-1,d,e); if(d>0&&d>e) s+=DP(a,b,c,d-1,e); if(e>0) s+=DP(a,b,c,d,e-1); dp[a][b][c][d][e]=s; return s; } int main() { while (cin>>n&&n!=0){ memset(dp,0,sizeof(dp)); memset(k,0,sizeof(k)); dp[1][0][0][0][0]=1; for(int i=0;i<n;i++) cin>>k[i]; cout<<DP(k[0],k[1],k[2],k[3],k[4])<<endl; } return 0; }
以上是关于271. 杨老师的照相排列的主要内容,如果未能解决你的问题,请参考以下文章