时间限制:1秒
空间限制:32768K
一个长方体,长宽高分别为x,y,z,都为自然数。
现在要把若干个相同的长方体摆成高为N的一根柱形体。
每层摆1个,如果两种摆法的高度是一样的,则认为这两种摆法等价,所以每层只有三种摆法。
求一共有多少种摆法。
输入描述:
第一行为一个数字N,N>=1且N<=100,表示要摆放的高度
第二行为长方体的长宽高,x、y、z都为无符号整数,按升序排列。
输出描述:
摆法总数,已知该总数会小于10000000
输入例子1:
10
5 6 7
输出例子1:
1
#include
#include
using namespace std;
int n;
int a[5];
int cnt = 0;
void finds(int t)
{
if(t==n)
{
cnt++;
return ;
}
if(t>n)return ;
for(int i = 0;
i < 3;
i++)
{
finds(t+a[i]);
}
return ;
}
int main()
{
cin>>n;
for(int i = 0;
i < 3;
i++)cin>>a[i];
sort(a,a+3);
finds(0);
cout<
【背包|长方体的摆放】
推荐阅读
- HDU 3496 Watch The Movie (二维背包+01背包)
- 牛客练习赛34 ABCD题解
- 算法刷题笔记|牛客网 NC20859 兔子的名字
- 算法刷题笔记|牛客网 字节跳动2019真题 聪明的编辑 正则表达式
- 牛客网|牛客练习赛25