酷代码 AI
菜单

城主一共有n(n<100)名归零者手下,其中第i个人的伤势为ai。城主会提问q次,每次都会询问从第L个人到第R个人之中,谁的伤最严重,也就是最大的ai是多少。 输入: 第一行输入n、q。 紧接着一行输入n个数ai,代表每个人的伤势。 接下来q行,每行两个数L与R,代表每次询问的范围。 输出: 输出共q行,每行为对应问题的答案。 输入样例: 10 3 3 2 7 6 8 4 1 5 10 9 2 4 1 5 1 10 输出样例: 7 8 10#include <iostream> using namespace std; int main() { int n, q, l, r, maxn, a[100]; cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= q; i++) { maxn = 0; for ( ) {

以下是补全后的代码: ```cpp #include <iostream> using namespace std; int main() { int n, q, l, r, maxn, a[100]; cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= q; i++) { cin >> l >> r; // 读取每次询问的范围 maxn = 0; for (int j = l; j <= r; j++) // 遍历从第L个人到第R个人 { if (a[j] > maxn) // 如果当前人的伤势比maxn大 { maxn = a[j]; // 更新maxn为当前人的伤势 } } cout << maxn << endl; } return 0; } ``` 代码解释: 1. 输入部分: - 首先读取`n`和`q`,分别表示归零者手下的人数和询问的次数。 - 接着使用`for`循环读取每个人的伤势,存储在数组`a`中。 - 然后使用另一个`for`循环进行`q`次询问,每次读取询问的范围`L`和`R`。 2. 查找最大值部分: - 对于每次询问,初始化`maxn`为0。 - 使用`for`循环遍历从第`L`个人到第`R`个人,比较每个人的伤势与`maxn`的大小,如果当前人的伤势比`maxn`大,则更新`maxn`为当前人的伤势。 3. 输出部分: - 每次询问结束后,输出`maxn`,即从第`L`个人到第`R`个人中伤势最严重的人的伤势。 复杂度分析: - 时间复杂度:$O(q * (R - L + 1))$,其中`q`是询问的次数,`R - L + 1`是每次询问的范围。 - 空间复杂度:$O(n)$,主要用于存储每个人的伤势。 [2026-01-24 21:05:58 | AI问答 | 508点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多