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;
}输出
Length of wall : 29 Length of shelves : 3 9 Optimal Shelves fitting : 0 3 2
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP