计算面积为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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.