作者:mobiledu2502886443 | 来源:互联网 | 2024-12-09 18:15
本文介绍了一个C++程序,该程序用于计算一个向量首尾索引的和。当向量长度为偶数时,程序会遇到对称对,如v1[0]+v1[last]与v1[last]+v1[0],这些实际上是相同的计算结果,因此需要排除重复项以提高效率。
开发了一款C++程序,旨在计算向量中首尾元素之和。具体来说,程序会输出v1[k] + v1[v1.size() - 1 - k]
,其中k
遍历所有索引。当用户提供的向量长度为偶数时,程序可能会遇到对称对,例如v1[0] + v1[last]
和v1[last] + v1[0]
,这两者实际上是一样的,因此需要排除重复计算。以下是原始代码:
#include
#include
using namespace std;
int main() {
vector v1; // 初始化一个空的整数向量
int i; // 定义一个整数变量
// 提示用户输入一系列整数
cout <<"请输入一组整数(按Ctrl+D结束):\n";
while (cin >> i) {
v1.push_back(i); // 在运行时用输入的整数填充向量
}
// 原始实现
for (size_t k = 0; k != v1.size() && k != v1.size() - 1 - k; ++k) {
cout <<"索引" < < }
return 0;
}
然而,上述代码在处理偶数长度的向量时会导致重复的输出。为了优化这一点,可以通过仅遍历向量的一半来避免重复计算对称对。改进后的代码如下:
for (size_t k = 0; k <(v1.size() + 1) / 2; ++k) {
cout <<"索引" < <}
这样,即使对于偶数长度的向量,也只会计算一次每个对称对,从而提高了程序的效率。