【动态规划】搭积木
传送门:CodeVS1255
这道题很显然是DP
第一个求方案应该是很白痴的DP
三维数组就可以了
用$ f_{i,j,k} $记录自上而下第i层当前层用了j个一共用了k个(注意这里j<=10)
转移就是
$f_{i,j,k}=f_{i-1,j-1,k-j}+f_{i-1,j+1,k-j}$
这里的主要问题就在于为什么要自上而下统计
因为第二问求具体方案时要按照自下而上的字典序输出,所以要保证下面状态的比上面的大,成为一棵树(二叉树),然后就可以求解方案了
代码如下
|
|
传送门:CodeVS1255
这道题很显然是DP
第一个求方案应该是很白痴的DP
三维数组就可以了
用$ f_{i,j,k} $记录自上而下第i层当前层用了j个一共用了k个(注意这里j<=10)
转移就是
$f_{i,j,k}=f_{i-1,j-1,k-j}+f_{i-1,j+1,k-j}$
这里的主要问题就在于为什么要自上而下统计
因为第二问求具体方案时要按照自下而上的字典序输出,所以要保证下面状态的比上面的大,成为一棵树(二叉树),然后就可以求解方案了
代码如下
|
|