题解
【入门】怎样种树?
1 条题解
-
0
解题思路
总共 n 棵树,三种树都要有且都是偶数,还要满足桃树数量 ≤ 梨树 ≤ 苹果树。输出所有可能的组合。
思路:枚举。
- 枚举桃树数量 i(偶数,从 2 开始)
- 枚举梨树数量 j(偶数)
- 枚举苹果树数量 k(偶数)
- 检查条件:
- i + j + k 等于总数 n
- j ≥ i(梨树不少于桃树)
- k ≥ j(苹果树不少于梨树)
- 满足就输出
为什么每种至少 2? 因为三种都要有且数量都是偶数,最小偶数就是 2。
举例 n=18:
- 2 2 14、2 4 12、2 6 10、2 8 8、4 4 10、4 6 8、6 6 6
参考代码
#include <iostream> using namespace std; int main() { int n; cin >> n; for (int i = 2; i <= n - 4; i += 2) { // 桃树 for (int j = 2; j <= n - 4; j += 2) { // 梨树 for (int k = 2; k <= n - 4; k += 2) { // 苹果树 if (i + j + k == n && j >= i && k >= j) { cout << i << " " << j << " " << k << endl; } } } } return 0; }复杂度分析
- 时间复杂度:O(N³),三重枚举
- 空间复杂度:O(1)
- 1