校门外的树c++程序
时间: 2023-09-04 11:11:22 浏览: 155
很高兴回答您的问题!以下是一个简单的 C++ 程序,用于在控制台中打印出校门外的树:
```c++
#include <iostream>
int main() {
std::cout << " * " << std::endl;
std::cout << " *** " << std::endl;
std::cout << " ***** " << std::endl;
std::cout << " ******* " << std::endl;
std::cout << " ********* " << std::endl;
std::cout << " *********** " << std::endl;
std::cout << " * " << std::endl;
std::cout << " * " << std::endl;
std::cout << " * " << std::endl;
std::cout << " * " << std::endl;
return 0;
}
```
希望能够帮到您!
相关问题
编写其源程序并分析解题思路和时间复杂度
以下是 P1047 校门外的树 的 C++ 源代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 10010;
int a[maxn];
int main() {
int l, m;
cin >> l >> m;
for (int i = 0; i < m; i++) {
cin >> a[i];
}
sort(a, a + m);
int ans = a[0];
for (int i = 1; i < m; i++) {
if (a[i] - a[i - 1] - 1 > 0) {
ans += a[i] - a[i - 1] - 1;
}
}
ans += l - a[m - 1] - 1;
cout << ans << endl;
return 0;
}
```
解题思路:
题目要求计算一段道路上没有被树覆盖的长度,需要将树的位置记录在一个数组中,对数组进行排序,从而得到每两棵相邻树之间的空隙长度,将这些空隙长度累加起来即可得到未被覆盖的长度。如果第一棵树的位置不是0,则需要在0和第一棵树之间再计算一段长度。
时间复杂度:
该算法的时间复杂度为 O(mlogm),其中 m 表示树的数量。这是因为需要对树的位置进行排序,排序的时间复杂度为 O(mlogm),计算未被覆盖的长度的时间复杂度为 O(m),因此总的时间复杂度为 O(mlogm)。
阅读全文