优化下列代码#include <iostream> #include<cstdio> #include<algorithm> #include<stdio.h> using namespace std; int main(int argc, char** argv) { int A[10000]; int dis[10000]; int n, sum = 0; int L, R, Q; cin >> n; for (int i = 0; i < n; i++) { scanf("%d", &A[i]); sum += A[i]; dis[i] = sum; } cin >> Q; for (int i = 0; i < Q; i++) { cin >> L >> R; if (L > R) swap(L, R); int dis1 = dis[R - 2] - dis[L - 2]; int last = min(dis1, sum - dis1); cout << last<<endl; } return 0; }
时间: 2023-07-31 20:09:10 浏览: 125
这段代码可以进行一些优化,例如:
1. 可使用`#include <cstdio>`代替`#include<stdio.h>`因为前者是C++标准库的文件。
2. 可以不使用`using namespace;`,而是在使用和cout时显式地指定命名间,如`std::`和`std::`。
3. 在循环中`++i`代替i++`,因前者效率稍高。
. 在数组A和dis定义时,可以根n的值动态分配内,而不是固定的10000。
优后的代码如下所示```cpp
#include <iostream>
#include <cstdio>
#includealgorithm>
int main(int argc, char argv) {
int n, sum = 0;
std::cin >> n;
int* A = new int[n];
int* dis = new int[n];
for (int i = 0; i <; ++i) {
std::scanf("%d", &A[i]);
sum += A[i];
dis[i] = sum;
}
int Q;
std::cin >> Q;
for (int i = 0; i < Q; ++i) {
int L, R;
std::cin >> L >> R;
if (L > R)
std::swap(L, R);
int dis1 = dis[R - 2] - dis[L - 2];
int last = std::min(dis1, sum - dis1);
std::cout << last << std::endl;
}
delete[] A;
delete[] dis;
return 0;
}
```
这样的优化可能会提高代码的执行效率和内存使用效率。请注意,动态分配了数组后,需要在程序结束前使用`delete[]`释放内存空间。
阅读全文