Problem R

来源:互联网 发布:fedora 安装软件 编辑:程序博客网 时间:2024/05/16 18:55

概述:有一种6*6的箱子,有1*1, 2*2, 3*3, 4*4, 5*5, 6*6类型的货物,问给定的货物最少需要多少箱子才能全部装上。

思路:1个6*6,5*5,4*4的货物占用1个箱子,4个3*3的货物占1个箱子,9个2*2的货物占1个箱子,36个1*1的货物占1个箱子.。先计算6,5,4的货物占用的箱子,在计算3占用的箱子,并记录下多余出的3,然后用3和4余出的空位填2,然后用所有的空位填1.

感想:非常难,做了很久才做出来。

#include<iostream>#include<fstream>using namespace std;int main(){//ifstream cin("aaa.txt");int remain[4] = { 0,5,3,1 };while (1){int flag = 0;int a[7];for (int i = 1; i <= 6; ++i){cin >> a[i];flag += a[i];}if (flag == 0) break;int sum = a[6] + a[5] + a[4] + (a[3] + 3) / 4;int remainTwo = a[4] * 5 + remain[a[3] % 4];if (remainTwo < a[2])sum += (a[2] - remainTwo + 8) / 9;int remainOne = sum * 36 - a[6] * 36 - a[5] * 25 - a[4] * 16 - a[3] * 9 - a[2] * 4;if (remainOne < a[1])sum += (a[1] - remainOne + 35) / 36;cout << sum << endl;}return 0;}

0 0
原创粉丝点击