<center style="color:rgba(0,0,0,.87);font-family:Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:14px;">
</center>
制作门框
时间限制: 1 Sec 内存限制: 128 MB</center>
题目描述
zc有很多根长度为n的木板,他想用这些木板做两个完全一样的门框。每个门框由两根竖直放置的木板和一根水平放置的木板组成。竖直放置的木板长度为a,水平放置的木板长度为b,这些木板必须完整,不能拼接而成。
请你计算最少需要多少木板来制作这两个门框。zc可以将木板任意分割,但是无法将木板拼接起来。
输入
第一行包含一个整数T(1<T<100),代表有T组数据。
每组数据有三行,第一行为一个整数n(1<=n<=1000)代表木板长度。
第二行为一个整数a,代表竖直放置木板的长度。
第三行为一个整数b,代表水平放置木板的长度。
输出
输出制作这两个门框的最小木板数量。
样例输入
2
8
1
2
5
3
4
样例输出
1
6
解题思路
贪心算法,一点一点的选,选过之后变为零。具体见代码:
#include <stdio.h>
int main()
{
int t, a, b, n, m, i, j, s[10];
scanf("%d", &t);
while (t--)
{
scanf("%d%d%d", &n, &a, &b);
s[0] = s[2] = s[3] = s[5] = a;
s[1] = s[4] = b;
for (i = 0; ; i++)
{
m = n;
for (j = 0; j < 6; j++)
{
if (m >= s[j])
{
m -= s[j];
s[j] = 0;
}
}
if (m == n)
break;
}
printf("%d\n", i);
}
return 0;
}