計算面積為n的矩形最小周長的C++程式


假設我們有一個數字n。我們正在開發一個建設新資料中心專案。該資料中心的佔地面積將是一個面積正好為n平方米的矩形。資料中心的每一側都必須是整數。我們希望最大限度地減少外部環境對資料中心的影響。為此,我們希望最大限度地減少資料中心周長的長度(即其四條邊的長度之和)。我們必須找到面積正好為n平方米的矩形資料中心的最小周長。

問題類別

程式設計中的各種問題可以透過不同的技術來解決。為了解決問題,我們首先必須設計一個演算法,為此我們必須詳細研究特定問題。如果同一個問題反覆出現,可以使用遞迴方法;或者,我們也可以使用迭代結構。可以使用if-else和switch case等控制語句來控制程式中邏輯的流程。有效地使用變數和資料結構可以提供更簡單的解決方案以及輕量級、低記憶體需求的程式。我們必須檢視現有的程式設計技術,例如分治法、貪婪程式設計、動態規劃,並找出是否可以使用它們。這個問題可以透過一些基本的邏輯或蠻力法來解決。請遵循以下內容以更好地理解該方法。

因此,如果我們問題的輸入類似於n = 36,則輸出將為24,因為資料中心所需的形狀將是6×6的正方形。周長為6 + 6 + 6 + 6 = 24。

步驟

為了解決這個問題,我們將遵循以下步驟:

ans := inf
for initialize i := 1, when i * i <= n, update (increase i by 1), do:
   if n mod i is same as 0, then:
      tmp := n / i
      ans := minimum of ans and 2 * (tmp + i)
return ans

示例

讓我們看看下面的實現以更好地理解:

#include <bits/stdc++.h>
using namespace std;
int solve(int n){
   int ans = 9999;
   for (int i = 1; i * i <= n; i++){
      if (n % i == 0){
         int tmp = n / i;
         ans = min(ans, 2 * (tmp + i));
      }
   }
   return ans;
}
int main(){
   int n = 36;
   cout << solve(n) << endl;
}

輸入

36

輸出

24

更新於:2022年4月8日

283 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告