题解
【入门】扩建鱼塘问题
1 条题解
-
0
解题思路
鱼塘是 m×n 的矩形,要扩建成一个正方形,问面积至少增加多少。
思路:
要把矩形变成长宽相等的正方形,边长得取 m 和 n 中较大的那个(这样原来的鱼塘能被包含进去,面积增加最少)。
- 如果 m > n,正方形边长取 m,新面积 m²,增加 m² - m×n
- 如果 n > m,正方形边长取 n,新面积 n²,增加 n² - m×n
为什么要取大的那边? 如果取小的那边,原来的鱼塘会有一边放不下,所以必须取较大的边做边长,面积才增加最少。
举例:鱼塘 5×3
- 边长取 5,正方形面积 25
- 原面积 15
- 增加 25 - 15 = 10
参考代码
#include <iostream> using namespace std; int main() { int m, n; cin >> m >> n; if (m > n) { cout << m * m - m * n << endl; // 边长取 m } else { cout << n * n - m * n << endl; // 边长取 n } return 0; }复杂度分析
- 时间复杂度:O(1)
- 空间复杂度:O(1)
- 1