时间限制:1秒
空间限制:32768K
一个长方体,长宽高分别为x,y,z,都为自然数。
现在要把若干个相同的长方体摆成高为N的一根柱形体。
每层摆1个,如果两种摆法的高度是一样的,则认为这两种摆法等价,所以每层只有三种摆法。
求一共有多少种摆法。
输入描述:
第一行为一个数字N,N>=1且N<=100,表示要摆放的高度
第二行为长方体的长宽高,x、y、z都为无符号整数,按升序排列。
输出描述:
摆法总数,已知该总数会小于10000000
输入例子1:
10
5 6 7
输出例子1:
1
#include<iostream>
#include<algorithm>
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<<cnt<<endl;
return 0;
}