1=16,2=15,3=14,前数排15后数排14一共多少人有17列,每次递减数值为1,求17列数字相加的和

  • 把所有正奇数从小到大排列并按如下规律分组:(1),(35,7)(9,1113,1517),(1921,2325,2729,31)…,现用等式A

    =(ij)表示正奇数M是第i组第j个数(从左往右数),洳A

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

(注意在poj提交时换掉代码中的万能头

第1排站在最后边,第 k排站在最前边

学生的身高互不相同,把他们从高到底依次标记为 1,2,…,N

在合影时要求每一排从左到右身高递减,每一列从后到前身高也递减

问前数排15后数排14一共哆少人有多少种安排合影位置的方案?

下面的一排三角矩阵给出了当 N=6,k=3,N1=3,N2=2,N3=1 时的全部16种合影方案注意身高最高的是1,最低的是6


    

输入包含多组測试数据。

每组数据两行第一行包含一个整数k表示总排数。

第二行包含k个整数表示从后向前每排的具体人数。

当输入k=0的数据时表示輸入终止,且该数据无需处理

每组测试数据输出一个答案,表示不同安排的数量

1≤k≤5,学生总人数不超过30人。


    

    
来源:《算法竞赛进阶指喃》
  1. 首先我们可以看到k小于等于5对于每个人我们需要决定这个人放在哪个位置
  2. 如果从高到低依次安排每个同学位置,那么在安排过程中当前同学一定占据某排最靠左的某个位置,并且安排后从后往前每排人数单调递减
  3. 考虑到k小于等于5我们可以考虑用每排的人数去表示當前排列形式的方案数,即用f[a][b][c][d][e]表示第一排人数为a第二排人数为b。。的方案数
  4. 对于f[a][b][c][d][e]的排列形式,是由最后一个人安排在第一排第二排或第三排等等决策得来的,那么可以由下面的代码进行计算
  5.  
  6. 注意前一排人数要小于后一排,数组太大建议在main函数里根据实际需要定義数组或vector大小,或者用for循环根据需要初始化这会大大加快程序速度(1175ms -> 2ms)
 

我要回帖

更多关于 前数排15后数排14一共多少人 的文章

 

随机推荐