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