C++ 中的货架适配问题
在这个问题中,我们得到了三个整数值 W、n、m,分别表示墙的长度 W、货架的大小 n 和 m。我们的任务是 *创建一个程序来解决货架适配问题*。
我们需要找到一种方法来适配货架,使适配货架后剩余的空间最小化。解决问题时的另一个约束条件是制造成本,较大的货架更具成本效益,因此我们需要优先考虑它们。
输出应采用以下格式:
n 尺寸货架的数量 m 尺寸货架的数量 剩余空间
让我们举个例子来理解这个问题
Input: W = 12, n = 5, m = 3 Output: 0 4 0
解释
在这里,我们可以在墙上精确地放置 4 个 3 尺寸的货架。
这将使总长度 = 4 * 3 = 12
因此,在适配后,墙上没有剩余长度。
解决方案方法
解决此问题的一个简单方法是使用蛮力法,即检查在墙上适配货架的每种可能组合,并找到使墙上剩余空间最小化或消除剩余空间的组合。对于次要任务,我们将首先开始适配较长尺寸的货架,这将使较长尺寸的货架具有优先级。我们将看看哪种组合在获得最佳解决方案时,能以最大可能数量的较大货架,给出最小结果。
示例
程序说明了我们解决方案的工作原理
#include <bits/stdc++.h> using namespace std; void solveFittingShelves(int wall, int m, int n){ int numM = 0, numN = 0, minSpaceLeft = wall; int p = wall/m, q = 0, rem = wall%m; numM = p; numN = q; minSpaceLeft = rem; while (wall >= n) { q += 1; wall = wall - n; p = wall / m; rem = wall % m; if (rem <= minSpaceLeft) { numM = p; numN = q; minSpaceLeft = rem; } } cout<<numM<<" "<<numN<<" "<<minSpaceLeft<<endl; } int main(){ int W = 29, m = 3, n = 9; cout<<"Length of wall : "<<W<<endl; cout<<"Length of shelves : "<<m<<"\t"<<n<<endl; cout<<"Optimal Shelves fitting : "; solveFittingShelves(W, m, n); return 0; }
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输出
Length of wall : 29 Length of shelves : 3 9 Optimal Shelves fitting : 0 3 2
广告