静态网站开发软件,学校网站模板图片,手表官网,网站建设服务收费标准正题
题目链接:http://poj.org/problem?id2279 题目大意
有k列#xff0c;每列人数不同#xff0c;要求从左到右和从前到后身高都单调递减#xff0c;学生高度是1∼N1∼N(人数总和) 解题思路
我们开一个五维数组#xff0c;然后每次在人少那列填充#xff0c;按照这总…正题
题目链接:http://poj.org/problem?id2279 题目大意
有k列每列人数不同要求从左到右和从前到后身高都单调递减学生高度是1∼N1∼N1\sim N(人数总和) 解题思路
我们开一个五维数组然后每次在人少那列填充按照这总方法我们进行dp(公式较长暂不解释)。 code
#includecstdio
#includecstring
#includevector
using namespace std;
int k,n[6];
int main()
{while(scanf(%d,k)){if(!k) break;memset(n,0,sizeof(n));for(int i1;ik;i){scanf(%d,n[i]);}long long f[n[1]1][n[2]1][n[3]1][n[4]1][n[5]1];memset(f,0,sizeof(f));f[0][0][0][0][0]1;for(int i10;i1n[1];i1)for(int i20;i2n[2];i2)for(int i30;i3n[3];i3)for(int i40;i4n[4];i4)for(int i50;i5n[5];i5){if(i1n[1])f[i11][i2][i3][i4][i5]f[i1][i2][i3][i4][i5];if(i1i2 i2n[2])f[i1][i21][i3][i4][i5]f[i1][i2][i3][i4][i5];if(i1i3 i2i3 i3n[3])f[i1][i2][i31][i4][i5]f[i1][i2][i3][i4][i5];if(i1i4 i2i4 i3i4 i4n[4])f[i1][i2][i3][i41][i5]f[i1][i2][i3][i4][i5];if(i1i5 i2i5 i3i5 i4i5 i5n[5])f[i1][i2][i3][i4][i51]f[i1][i2][i3][i4][i5];}printf(%lld\n,f[n[1]][n[2]][n[3]][n[4]][n[5]]);}
}