题目的意思就是给出的6个数字分别是1*1 ,2*2 , 3*3,4*4, 5*5,6*6的物品的数量,要将这些东西都用6*6的装,问最少要几个盒子。
首先就是6*6有几个,就要几个盒子。
然后5×5有几个,也要加上几个盒子,并且1*1的数量减少盒子数×11.
然后4*4有几个,加上几个盒子数,2×2的数量减少盒子数乘5.如果这时2的的数量变为负数了。那小于0多少,1*1的数量就减少那么多乘4.
最后是3*3的,算下盒子要几个,没放满的那个盒子能放几个2,几个1.
最后就是1,2要几个盒子。
这题是贪心算法,尽量取大的填充。
AC代码:
#include<iostream>
using namespace std;
int num[6];
int main () {
while (1) {
int temp = 0;
int tol = 0;
for (int i = 0 ; i < 6 ;i++) {
cin >> num[i];
if (num[i] == 0)
temp++;
}
if (temp == 6)
break;
tol = num[5] + num[4] + num[3];
num[0] = num[0] - num[4] * 11;
num[1] = num[1] - num[3] * 5;
if (num[1] < 0) {
num[0] = num[0] + num[1] * 4;
num[1]