Problem H 1378 Blocks
2021年下学期《C语言程序设计》作业16-2019年下学期期末考试
Description Blocks 题目描述 给你一个n块积木,每个积木块都是立方体,现在把它们排列一排,成m列,要求每列上至少有1个积木,且从左到右,每列的积木数量呈严格单调下降。比如8块积木,排成3列,那么合法的安排方案为521或者431。请问n块积木按规则排成m有多少种不同的方案? 输入 第一行是一个整数T(1≤T≤1000),表示样例的个数。 以后每个样例占一行,为两个整数 n(1≤n≤100),m(1≤m≤10)。 输出 依次每行输出一个样例的结果,为一个整数。
题意理解:把n块积木分为m列,使得每一列的积木数严格单调递减。
例如将45块积木分为9列,那么987654321是合法的。987654123是非法的。
通过猜想,n块积木分为m列的方案数铁定与先前的状态有关。
我们知道,如果能将(36)块积木按要求分为(8)列,那么在最高位的左边放上9块积木,那么就能得到最高位为9,将(36+9)块积木分为(9)列的方案数。
#include
共有 0 条评论